Sign associated user/gestionnaire in after password change
This commit is contained in:
parent
c2068d055d
commit
45e14d7a43
4 changed files with 76 additions and 0 deletions
|
@ -1,4 +1,6 @@
|
||||||
class Gestionnaires::PasswordsController < Devise::PasswordsController
|
class Gestionnaires::PasswordsController < Devise::PasswordsController
|
||||||
|
after_action :try_to_authenticate_user, only: %i(update)
|
||||||
|
|
||||||
# GET /resource/password/new
|
# GET /resource/password/new
|
||||||
# def new
|
# def new
|
||||||
# super
|
# super
|
||||||
|
@ -29,4 +31,11 @@ class Gestionnaires::PasswordsController < Devise::PasswordsController
|
||||||
# def after_sending_reset_password_instructions_path_for(resource_name)
|
# def after_sending_reset_password_instructions_path_for(resource_name)
|
||||||
# super(resource_name)
|
# super(resource_name)
|
||||||
# end
|
# end
|
||||||
|
|
||||||
|
def try_to_authenticate_user
|
||||||
|
if gestionnaire_signed_in?
|
||||||
|
user = User.find_by(email: current_gestionnaire.email)
|
||||||
|
sign_in user if user
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
class Users::PasswordsController < Devise::PasswordsController
|
class Users::PasswordsController < Devise::PasswordsController
|
||||||
|
after_action :try_to_authenticate_gestionnaire, only: %i(update)
|
||||||
|
|
||||||
# GET /resource/password/new
|
# GET /resource/password/new
|
||||||
# def new
|
# def new
|
||||||
# super
|
# super
|
||||||
|
@ -29,4 +31,11 @@ class Users::PasswordsController < Devise::PasswordsController
|
||||||
# def after_sending_reset_password_instructions_path_for(resource_name)
|
# def after_sending_reset_password_instructions_path_for(resource_name)
|
||||||
# super(resource_name)
|
# super(resource_name)
|
||||||
# end
|
# end
|
||||||
|
|
||||||
|
def try_to_authenticate_gestionnaire
|
||||||
|
if user_signed_in?
|
||||||
|
gestionnaire = Gestionnaire.find_by(email: current_user.email)
|
||||||
|
sign_in gestionnaire if gestionnaire
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
29
spec/controllers/gestionnaires/passwords_controller_spec.rb
Normal file
29
spec/controllers/gestionnaires/passwords_controller_spec.rb
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
require "spec_helper"
|
||||||
|
|
||||||
|
describe Gestionnaires::PasswordsController, type: :controller do
|
||||||
|
before do
|
||||||
|
@request.env["devise.mapping"] = Devise.mappings[:gestionnaire]
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "update" do
|
||||||
|
context "when associated gestionnaire" do
|
||||||
|
let(:gestionnaire) { create(:gestionnaire, email: 'unique@plop.com', password: 'password') }
|
||||||
|
let(:user) { create(:user, email: 'unique@plop.com', password: 'password') }
|
||||||
|
|
||||||
|
before do
|
||||||
|
@token = gestionnaire.send(:set_reset_password_token)
|
||||||
|
user # make sure it's created
|
||||||
|
end
|
||||||
|
|
||||||
|
it "also signs user in" do
|
||||||
|
put :update, gestionnaire: {
|
||||||
|
reset_password_token: @token,
|
||||||
|
password: "supersecret",
|
||||||
|
password_confirmation: "supersecret",
|
||||||
|
}
|
||||||
|
expect(subject.current_gestionnaire).to eq(gestionnaire)
|
||||||
|
expect(subject.current_user).to eq(user)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
29
spec/controllers/users/passwords_controller_spec.rb
Normal file
29
spec/controllers/users/passwords_controller_spec.rb
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
require "spec_helper"
|
||||||
|
|
||||||
|
describe Users::PasswordsController, type: :controller do
|
||||||
|
before do
|
||||||
|
@request.env["devise.mapping"] = Devise.mappings[:user]
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "update" do
|
||||||
|
context "when associated gestionnaire" do
|
||||||
|
let(:user) { create(:user, email: 'unique@plop.com', password: 'password') }
|
||||||
|
let(:gestionnaire) { create(:gestionnaire, email: 'unique@plop.com', password: 'password') }
|
||||||
|
|
||||||
|
before do
|
||||||
|
@token = user.send(:set_reset_password_token)
|
||||||
|
gestionnaire # make sure it's created
|
||||||
|
end
|
||||||
|
|
||||||
|
it "also signs gestionnaire in" do
|
||||||
|
put :update, user: {
|
||||||
|
reset_password_token: @token,
|
||||||
|
password: "supersecret",
|
||||||
|
password_confirmation: "supersecret",
|
||||||
|
}
|
||||||
|
expect(subject.current_user).to eq(user)
|
||||||
|
expect(subject.current_gestionnaire).to eq(gestionnaire)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue