-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathgraphql_devise.rb
More file actions
82 lines (60 loc) · 2.05 KB
/
graphql_devise.rb
File metadata and controls
82 lines (60 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# frozen_string_literal: true
require 'rails'
require 'rails/generators'
require 'graphql'
require 'devise_token_auth'
require 'zeitwerk'
GraphQL::Field.accepts_definitions(authenticate: GraphQL::Define.assign_metadata_key(:authenticate))
GraphQL::Schema::Field.accepts_definition(:authenticate)
legacy_concerns = ['set_user_by_token', 'model']
loader = Zeitwerk::Loader.for_gem
legacy_concerns.each do |concern_name|
loader.ignore("#{__dir__}/graphql_devise/concerns/legacy/#{concern_name}.rb")
end
loader.collapse("#{__dir__}/graphql_devise/concerns")
loader.collapse("#{__dir__}/graphql_devise/errors")
loader.collapse("#{__dir__}/generators")
loader.inflector.inflect('error_codes' => 'ERROR_CODES')
loader.inflector.inflect('supported_options' => 'SUPPORTED_OPTIONS')
loader.setup
legacy_concerns.each do |concern_name|
require_relative "graphql_devise/concerns/legacy/#{concern_name}"
end
ActionDispatch::Routing::Mapper.include(GraphqlDevise::RouteMounter)
module GraphqlDevise
class Error < StandardError; end
class InvalidMountOptionsError < ::GraphqlDevise::Error; end
@schema_loaded = false
@mounted_resources = []
def self.schema_loaded?
@schema_loaded
end
def self.load_schema
@schema_loaded = true
end
def self.resource_mounted?(model)
@mounted_resources.include?(model)
end
def self.mount_resource(model)
@mounted_resources << model
end
def self.add_mapping(mapping_name, resource)
return if Devise.mappings.key?(mapping_name.to_sym)
Devise.add_mapping(
mapping_name.to_s.pluralize.to_sym,
module: :devise, class_name: resource.to_s
)
end
def self.to_mapping_name(resource)
resource.to_s.underscore.tr('/', '_')
end
def self.configure_warden_serializer_for_model(model)
Devise.warden_config.serialize_into_session(to_mapping_name(model)) do |record|
model.serialize_into_session(record)
end
Devise.warden_config.serialize_from_session(to_mapping_name(model)) do |args|
model.serialize_from_session(*args)
end
end
end
require 'graphql_devise/engine'