Skip to content

Commit ccdf8af

Browse files
author
David Revelo
committed
Add deprecation messages to legacy concerns and create new ones
1 parent 855261f commit ccdf8af

27 files changed

Lines changed: 307 additions & 127 deletions

app/controllers/graphql_devise/concerns/set_user_by_token.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module SetUserByToken
77

88
included do
99
include DeviseTokenAuth::Concerns::SetUserByToken
10-
include GraphqlDevise::Concerns::AdditionalControllerMethods
10+
include AdditionalControllerMethods
1111
end
1212
end
1313
end

app/controllers/graphql_devise/graphql_controller.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44

55
module GraphqlDevise
66
class GraphqlController < ApplicationController
7-
include GraphqlDevise::Concerns::SetUserByToken
7+
include Concerns::SetUserByToken
88

99
def auth
1010
result = if params[:_json]
11-
GraphqlDevise::Schema.multiplex(
11+
Schema.multiplex(
1212
params[:_json].map do |param|
1313
{ query: param[:query] }.merge(execute_params(param))
1414
end
1515
)
1616
else
17-
GraphqlDevise::Schema.execute(params[:query], **execute_params(params))
17+
Schema.execute(params[:query], **execute_params(params))
1818
end
1919

2020
render json: result unless performed?

lib/graphql_devise.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
loader = Zeitwerk::Loader.for_gem
1313

1414
['additional_model_methods', 'controller_methods', 'model'].each do |concern_name|
15-
require_relative "graphql_devise/concerns/#{concern_name}"
16-
loader.ignore("#{__dir__}/graphql_devise/concerns/#{concern_name}.rb")
15+
require_relative "graphql_devise/concerns/legacy/#{concern_name}"
16+
loader.ignore("#{__dir__}/graphql_devise/concerns/legacy/#{concern_name}.rb")
1717
end
1818

19+
loader.collapse("#{__dir__}/graphql_devise/concerns")
1920
loader.collapse("#{__dir__}/graphql_devise/errors")
2021
loader.collapse("#{__dir__}/generators")
2122

@@ -29,7 +30,7 @@
2930
module GraphqlDevise
3031
class Error < StandardError; end
3132

32-
class InvalidMountOptionsError < GraphqlDevise::Error; end
33+
class InvalidMountOptionsError < Error; end
3334

3435
@schema_loaded = false
3536
@mounted_resources = []
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# frozen_string_literal: true
2+
3+
module GraphqlDevise
4+
module Authenticatable
5+
extend ActiveSupport::Concern
6+
7+
included do
8+
include DeviseTokenAuth::Concerns::User
9+
10+
::GraphqlDevise.configure_warden_serializer_for_model(self)
11+
end
12+
13+
class_methods do
14+
def reconfirmable
15+
devise_modules.include?(:confirmable) && column_names.include?('unconfirmed_email')
16+
end
17+
end
18+
19+
def update_with_email(attributes = {})
20+
Model::WithEmailUpdater.new(self, attributes).call
21+
end
22+
end
23+
end
Lines changed: 70 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,99 @@
11
# frozen_string_literal: true
22

33
module GraphqlDevise
4-
module Concerns
5-
module ControllerMethods
6-
extend ActiveSupport::Concern
4+
module ControllerMethods
5+
extend ActiveSupport::Concern
76

8-
private
7+
private
98

10-
def check_redirect_url_whitelist!(redirect_url)
11-
if blacklisted_redirect_url?(redirect_url)
12-
raise_user_error(I18n.t('graphql_devise.redirect_url_not_allowed', redirect_url: redirect_url))
13-
end
9+
def check_redirect_url_whitelist!(redirect_url)
10+
if blacklisted_redirect_url?(redirect_url)
11+
raise_user_error(I18n.t('graphql_devise.redirect_url_not_allowed', redirect_url: redirect_url))
1412
end
13+
end
1514

16-
def raise_user_error(message)
17-
raise GraphqlDevise::UserError, message
18-
end
15+
def raise_user_error(message)
16+
raise UserError, message
17+
end
1918

20-
def raise_user_error_list(message, errors:)
21-
raise GraphqlDevise::DetailedUserError.new(message, errors: errors)
22-
end
19+
def raise_user_error_list(message, errors:)
20+
raise DetailedUserError.new(message, errors: errors)
21+
end
2322

24-
def remove_resource
25-
controller.resource = nil
26-
controller.client_id = nil
27-
controller.token = nil
28-
end
23+
def remove_resource
24+
controller.resource = nil
25+
controller.client_id = nil
26+
controller.token = nil
27+
end
2928

30-
def response
31-
controller.response
32-
end
29+
def response
30+
controller.response
31+
end
3332

34-
def controller
35-
context[:controller]
36-
end
33+
def controller
34+
context[:controller]
35+
end
3736

38-
def resource_name
39-
GraphqlDevise.to_mapping_name(resource_class)
40-
end
37+
def resource_name
38+
::GraphqlDevise.to_mapping_name(resource_class)
39+
end
4140

42-
def resource_class
43-
self.class.instance_variable_get(:@resource_klass)
44-
end
41+
def resource_class
42+
self.class.instance_variable_get(:@resource_klass)
43+
end
4544

46-
def recoverable_enabled?
47-
resource_class.devise_modules.include?(:recoverable)
48-
end
45+
def recoverable_enabled?
46+
resource_class.devise_modules.include?(:recoverable)
47+
end
4948

50-
def confirmable_enabled?
51-
resource_class.devise_modules.include?(:confirmable)
52-
end
49+
def confirmable_enabled?
50+
resource_class.devise_modules.include?(:confirmable)
51+
end
5352

54-
def blacklisted_redirect_url?(redirect_url)
55-
DeviseTokenAuth.redirect_whitelist && !DeviseTokenAuth::Url.whitelisted?(redirect_url)
56-
end
53+
def blacklisted_redirect_url?(redirect_url)
54+
DeviseTokenAuth.redirect_whitelist && !DeviseTokenAuth::Url.whitelisted?(redirect_url)
55+
end
5756

58-
def current_resource
59-
@current_resource ||= controller.send(:set_resource_by_token, resource_class)
60-
end
57+
def current_resource
58+
@current_resource ||= controller.send(:set_resource_by_token, resource_class)
59+
end
6160

62-
def client
63-
if Gem::Version.new(DeviseTokenAuth::VERSION) <= Gem::Version.new('1.1.0')
64-
controller.client_id
65-
else
66-
controller.token.client if controller.token.present?
67-
end
61+
def client
62+
if Gem::Version.new(DeviseTokenAuth::VERSION) <= Gem::Version.new('1.1.0')
63+
controller.client_id
64+
else
65+
controller.token.client if controller.token.present?
6866
end
67+
end
6968

70-
def set_auth_headers(resource)
71-
auth_headers = resource.create_new_auth_token
72-
response.headers.merge!(auth_headers)
69+
def set_auth_headers(resource)
70+
auth_headers = resource.create_new_auth_token
71+
response.headers.merge!(auth_headers)
7372

74-
auth_headers
75-
end
73+
auth_headers
74+
end
7675

77-
def find_resource(field, value)
78-
if resource_class.connection.adapter_name.downcase.include?('mysql')
79-
# fix for mysql default case insensitivity
80-
resource_class.where("BINARY #{field} = ? AND provider= ?", value, provider).first
81-
elsif Gem::Version.new(DeviseTokenAuth::VERSION) < Gem::Version.new('1.1.0')
82-
resource_class.find_by(field => value, :provider => provider)
83-
else
84-
resource_class.dta_find_by(field => value, :provider => provider)
85-
end
76+
def find_resource(field, value)
77+
if resource_class.connection.adapter_name.downcase.include?('mysql')
78+
# fix for mysql default case insensitivity
79+
resource_class.where("BINARY #{field} = ? AND provider= ?", value, provider).first
80+
elsif Gem::Version.new(DeviseTokenAuth::VERSION) < Gem::Version.new('1.1.0')
81+
resource_class.find_by(field => value, :provider => provider)
82+
else
83+
resource_class.dta_find_by(field => value, :provider => provider)
8684
end
85+
end
8786

88-
def get_case_insensitive_field(field, value)
89-
if resource_class.case_insensitive_keys.include?(field)
90-
value.downcase
91-
else
92-
value
93-
end
87+
def get_case_insensitive_field(field, value)
88+
if resource_class.case_insensitive_keys.include?(field)
89+
value.downcase
90+
else
91+
value
9492
end
93+
end
9594

96-
def provider
97-
:email
98-
end
95+
def provider
96+
:email
9997
end
10098
end
10199
end

lib/graphql_devise/concerns/additional_model_methods.rb renamed to lib/graphql_devise/concerns/legacy/additional_model_methods.rb

File renamed without changes.
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# frozen_string_literal: true
2+
3+
module GraphqlDevise
4+
module Concerns
5+
module ControllerMethods
6+
extend ActiveSupport::Concern
7+
8+
included do
9+
ActiveSupport::Deprecation.warn(<<-DEPRECATION.strip_heredoc, caller)
10+
Including GraphqlDevise::Concerns::ControllerMethods is deprecated and will be removed in a future version of
11+
this gem. Please use GraphqlDevise::ControllerMethods instead.
12+
13+
EXAMPLE
14+
15+
include GraphqlDevise::ControllerMethods
16+
DEPRECATION
17+
end
18+
19+
private
20+
21+
def check_redirect_url_whitelist!(redirect_url)
22+
if blacklisted_redirect_url?(redirect_url)
23+
raise_user_error(I18n.t('graphql_devise.redirect_url_not_allowed', redirect_url: redirect_url))
24+
end
25+
end
26+
27+
def raise_user_error(message)
28+
raise GraphqlDevise::UserError, message
29+
end
30+
31+
def raise_user_error_list(message, errors:)
32+
raise GraphqlDevise::DetailedUserError.new(message, errors: errors)
33+
end
34+
35+
def remove_resource
36+
controller.resource = nil
37+
controller.client_id = nil
38+
controller.token = nil
39+
end
40+
41+
def request
42+
controller.request
43+
end
44+
45+
def response
46+
controller.response
47+
end
48+
49+
def controller
50+
context[:controller]
51+
end
52+
53+
def resource_name
54+
GraphqlDevise.to_mapping_name(resource_class)
55+
end
56+
57+
def resource_class
58+
self.class.instance_variable_get(:@resource_klass)
59+
end
60+
61+
def recoverable_enabled?
62+
resource_class.devise_modules.include?(:recoverable)
63+
end
64+
65+
def confirmable_enabled?
66+
resource_class.devise_modules.include?(:confirmable)
67+
end
68+
69+
def blacklisted_redirect_url?(redirect_url)
70+
DeviseTokenAuth.redirect_whitelist && !DeviseTokenAuth::Url.whitelisted?(redirect_url)
71+
end
72+
73+
def current_resource
74+
@current_resource ||= controller.send(:set_resource_by_token, resource_class)
75+
end
76+
77+
def client
78+
if Gem::Version.new(DeviseTokenAuth::VERSION) <= Gem::Version.new('1.1.0')
79+
controller.client_id
80+
else
81+
controller.token.client if controller.token.present?
82+
end
83+
end
84+
85+
def set_auth_headers(resource)
86+
auth_headers = resource.create_new_auth_token
87+
response.headers.merge!(auth_headers)
88+
89+
auth_headers
90+
end
91+
92+
def client_and_token(token)
93+
if Gem::Version.new(DeviseTokenAuth::VERSION) <= Gem::Version.new('1.1.0')
94+
{ client_id: token.first, token: token.last }
95+
else
96+
{ client_id: token.client, token: token.token }
97+
end
98+
end
99+
100+
def redirect_headers(token_info, redirect_header_options)
101+
controller.send(
102+
:build_redirect_headers,
103+
token_info.fetch(:token),
104+
token_info.fetch(:client_id),
105+
redirect_header_options
106+
)
107+
end
108+
109+
def find_resource(field, value)
110+
if resource_class.connection.adapter_name.downcase.include?('mysql')
111+
# fix for mysql default case insensitivity
112+
resource_class.where("BINARY #{field} = ? AND provider= ?", value, provider).first
113+
elsif Gem::Version.new(DeviseTokenAuth::VERSION) < Gem::Version.new('1.1.0')
114+
resource_class.find_by(field => value, :provider => provider)
115+
else
116+
resource_class.dta_find_by(field => value, :provider => provider)
117+
end
118+
end
119+
120+
def get_case_insensitive_field(field, value)
121+
if resource_class.case_insensitive_keys.include?(field)
122+
value.downcase
123+
else
124+
value
125+
end
126+
end
127+
128+
def provider
129+
:email
130+
end
131+
end
132+
end
133+
end

0 commit comments

Comments
 (0)