@@ -7,6 +7,39 @@ module Concerns
77 SetUserByToken . module_eval do
88 attr_accessor :client_id , :token , :resource
99
10+ class_methods do
11+ def set_resource_by_model ( models , **kwargs )
12+ Array ( models ) . each do |model |
13+ GraphqlDevise . add_mapping ( GraphqlDevise . to_mapping_name ( model . to_s ) , model . to_s )
14+ end
15+ GraphqlDevise . reconfigure_warden!
16+
17+ before_action ( **kwargs ) do
18+ authenticate_model ( models )
19+ end
20+ end
21+ end
22+
23+ def authenticate_model ( models )
24+ Array ( models ) . each do |model |
25+ set_resource_by_token ( model )
26+ return @resource
27+ end
28+
29+ nil
30+ end
31+
32+ def resource_class ( resource = nil )
33+ return super unless resource . is_a? ( Class )
34+
35+ if ( Object . const_defined? ( 'ActiveRecord::Base' ) && resource < ActiveRecord ::Base ) ||
36+ ( Object . const_defined? ( 'Mongoid::Document' ) && resource < Mongoid ::Document )
37+ return resource
38+ end
39+
40+ super
41+ end
42+
1043 def full_url_without_params
1144 request . base_url + request . path
1245 end
@@ -16,10 +49,13 @@ def set_resource_by_token(resource)
1649 end
1750
1851 def graphql_context ( resource_name )
19- {
52+ context = {
2053 resource_name : resource_name ,
2154 controller : self
2255 }
56+ context [ :current_resource ] = @resource if @resource . present?
57+
58+ context
2359 end
2460
2561 def build_redirect_headers ( access_token , client , redirect_header_options = { } )
0 commit comments