From eff8e1d68488b996a257c1ecc1173a26b9f8fe0e Mon Sep 17 00:00:00 2001 From: Marc Miranda Date: Fri, 27 Oct 2017 19:32:40 +0530 Subject: [PATCH 1/3] Added provider parameter to find_resource --- .../devise_token_auth/application_controller.rb | 4 ++++ .../devise_token_auth/concerns/resource_finder.rb | 7 +------ app/controllers/devise_token_auth/passwords_controller.rb | 2 +- .../devise_token_auth/registrations_controller.rb | 2 +- app/controllers/devise_token_auth/sessions_controller.rb | 2 +- app/controllers/devise_token_auth/unlocks_controller.rb | 2 +- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/controllers/devise_token_auth/application_controller.rb b/app/controllers/devise_token_auth/application_controller.rb index 83c76eabe..0041e34f6 100644 --- a/app/controllers/devise_token_auth/application_controller.rb +++ b/app/controllers/devise_token_auth/application_controller.rb @@ -15,6 +15,10 @@ def resource_errors return @resource.errors.to_hash.merge(full_messages: @resource.errors.full_messages) end + def provider + 'email' + end + protected def params_for_resource(resource) diff --git a/app/controllers/devise_token_auth/concerns/resource_finder.rb b/app/controllers/devise_token_auth/concerns/resource_finder.rb index 6d866bef9..1d2252d53 100644 --- a/app/controllers/devise_token_auth/concerns/resource_finder.rb +++ b/app/controllers/devise_token_auth/concerns/resource_finder.rb @@ -12,10 +12,9 @@ def get_case_insensitive_field_from_resource_params(field) q_value end - def find_resource(field, value) + def find_resource(field, value, provider) # fix for mysql default case insensitivity q = "#{field.to_s} = ? AND provider='#{provider.to_s}'" - if ActiveRecord::Base.connection.adapter_name.downcase.starts_with? 'mysql' q = "BINARY " + q end @@ -32,8 +31,4 @@ def resource_class(m=nil) mapping.to end - - def provider - 'email' - end end diff --git a/app/controllers/devise_token_auth/passwords_controller.rb b/app/controllers/devise_token_auth/passwords_controller.rb index bc7cf9faa..35e4019c1 100644 --- a/app/controllers/devise_token_auth/passwords_controller.rb +++ b/app/controllers/devise_token_auth/passwords_controller.rb @@ -28,7 +28,7 @@ def create end @email = get_case_insensitive_field_from_resource_params(:email) - @resource = find_resource(:uid, @email) + @resource = find_resource(:uid, @email, provider) @errors = nil @error_status = 400 diff --git a/app/controllers/devise_token_auth/registrations_controller.rb b/app/controllers/devise_token_auth/registrations_controller.rb index 4bed83447..71ec10b9c 100644 --- a/app/controllers/devise_token_auth/registrations_controller.rb +++ b/app/controllers/devise_token_auth/registrations_controller.rb @@ -7,7 +7,7 @@ class RegistrationsController < DeviseTokenAuth::ApplicationController def create @resource = resource_class.new(sign_up_params) - @resource.provider = "email" + @resource.provider = provider # honor devise configuration for case_insensitive_keys if resource_class.case_insensitive_keys.include?(:email) diff --git a/app/controllers/devise_token_auth/sessions_controller.rb b/app/controllers/devise_token_auth/sessions_controller.rb index cebfa03c2..8176f568d 100644 --- a/app/controllers/devise_token_auth/sessions_controller.rb +++ b/app/controllers/devise_token_auth/sessions_controller.rb @@ -16,7 +16,7 @@ def create if field q_value = get_case_insensitive_field_from_resource_params(field) - @resource = find_resource(field, q_value) + @resource = find_resource(field, q_value, provider) end if @resource && valid_params?(field, q_value) && (!@resource.respond_to?(:active_for_authentication?) || @resource.active_for_authentication?) diff --git a/app/controllers/devise_token_auth/unlocks_controller.rb b/app/controllers/devise_token_auth/unlocks_controller.rb index 8b3d37b9f..eeeed1603 100644 --- a/app/controllers/devise_token_auth/unlocks_controller.rb +++ b/app/controllers/devise_token_auth/unlocks_controller.rb @@ -10,7 +10,7 @@ def create end @email = get_case_insensitive_field_from_resource_params(:email) - @resource = find_resource(:email, @email) + @resource = find_resource(:email, @email, 'email') @errors = nil @error_status = 400 From 45319406cbf4c04db5c849572de59f5cd72e9eab Mon Sep 17 00:00:00 2001 From: Marc Miranda Date: Fri, 27 Oct 2017 22:48:22 +0530 Subject: [PATCH 2/3] Rollback according to discussion --- app/controllers/devise_token_auth/application_controller.rb | 4 ---- .../devise_token_auth/concerns/resource_finder.rb | 6 +++++- app/controllers/devise_token_auth/sessions_controller.rb | 2 +- app/controllers/devise_token_auth/unlocks_controller.rb | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/controllers/devise_token_auth/application_controller.rb b/app/controllers/devise_token_auth/application_controller.rb index 0041e34f6..83c76eabe 100644 --- a/app/controllers/devise_token_auth/application_controller.rb +++ b/app/controllers/devise_token_auth/application_controller.rb @@ -15,10 +15,6 @@ def resource_errors return @resource.errors.to_hash.merge(full_messages: @resource.errors.full_messages) end - def provider - 'email' - end - protected def params_for_resource(resource) diff --git a/app/controllers/devise_token_auth/concerns/resource_finder.rb b/app/controllers/devise_token_auth/concerns/resource_finder.rb index 1d2252d53..4103ae090 100644 --- a/app/controllers/devise_token_auth/concerns/resource_finder.rb +++ b/app/controllers/devise_token_auth/concerns/resource_finder.rb @@ -12,7 +12,7 @@ def get_case_insensitive_field_from_resource_params(field) q_value end - def find_resource(field, value, provider) + def find_resource(field, value) # fix for mysql default case insensitivity q = "#{field.to_s} = ? AND provider='#{provider.to_s}'" if ActiveRecord::Base.connection.adapter_name.downcase.starts_with? 'mysql' @@ -31,4 +31,8 @@ def resource_class(m=nil) mapping.to end + + def provider + 'email' + end end diff --git a/app/controllers/devise_token_auth/sessions_controller.rb b/app/controllers/devise_token_auth/sessions_controller.rb index 8176f568d..cebfa03c2 100644 --- a/app/controllers/devise_token_auth/sessions_controller.rb +++ b/app/controllers/devise_token_auth/sessions_controller.rb @@ -16,7 +16,7 @@ def create if field q_value = get_case_insensitive_field_from_resource_params(field) - @resource = find_resource(field, q_value, provider) + @resource = find_resource(field, q_value) end if @resource && valid_params?(field, q_value) && (!@resource.respond_to?(:active_for_authentication?) || @resource.active_for_authentication?) diff --git a/app/controllers/devise_token_auth/unlocks_controller.rb b/app/controllers/devise_token_auth/unlocks_controller.rb index eeeed1603..8b3d37b9f 100644 --- a/app/controllers/devise_token_auth/unlocks_controller.rb +++ b/app/controllers/devise_token_auth/unlocks_controller.rb @@ -10,7 +10,7 @@ def create end @email = get_case_insensitive_field_from_resource_params(:email) - @resource = find_resource(:email, @email, 'email') + @resource = find_resource(:email, @email) @errors = nil @error_status = 400 From 53c5cbbacf0efb4e26cc30e3ace1303ffea76abf Mon Sep 17 00:00:00 2001 From: Marc Miranda Date: Sat, 28 Oct 2017 00:38:49 +0530 Subject: [PATCH 3/3] Fixed password_controller --- app/controllers/devise_token_auth/passwords_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/devise_token_auth/passwords_controller.rb b/app/controllers/devise_token_auth/passwords_controller.rb index 35e4019c1..bc7cf9faa 100644 --- a/app/controllers/devise_token_auth/passwords_controller.rb +++ b/app/controllers/devise_token_auth/passwords_controller.rb @@ -28,7 +28,7 @@ def create end @email = get_case_insensitive_field_from_resource_params(:email) - @resource = find_resource(:uid, @email, provider) + @resource = find_resource(:uid, @email) @errors = nil @error_status = 400