Session: send a mail to confirm gestionnaire login

This commit is contained in:
simon lehericey 2018-10-03 11:11:02 +02:00
parent 2613d05a4f
commit 5690599289
14 changed files with 215 additions and 30 deletions

View file

@ -23,13 +23,17 @@ class Users::SessionsController < Sessions::SessionsController
current_user.update(loged_in_with_france_connect: '')
end
if user_signed_in?
if gestionnaire_signed_in?
gestionnaire = current_gestionnaire
login_token = gestionnaire.login_token!
GestionnaireMailer.send_login_token(gestionnaire, login_token).deliver_later
[:user, :gestionnaire, :administrateur].each { |role| sign_out(role) }
redirect_to link_sent_path(email: gestionnaire.email)
elsif user_signed_in?
redirect_to after_sign_in_path_for(:user)
elsif gestionnaire_signed_in?
location = stored_location_for(:gestionnaire) || gestionnaire_procedures_path
redirect_to location
elsif administrateur_signed_in?
redirect_to admin_path
else
flash.alert = 'Mauvais couple login / mot de passe'
new
@ -37,6 +41,10 @@ class Users::SessionsController < Sessions::SessionsController
end
end
def link_sent
@email = params[:email]
end
# DELETE /resource/sign_out
def destroy
if gestionnaire_signed_in?
@ -68,6 +76,20 @@ class Users::SessionsController < Sessions::SessionsController
redirect_to new_user_session_path
end
def sign_in_by_link
gestionnaire = Gestionnaire.find(params[:id])
if gestionnaire&.login_token_valid?(params[:jeton])
user = User.find_by(email: gestionnaire.email)
administrateur = Administrateur.find_by(email: gestionnaire.email)
[user, gestionnaire, administrateur].compact.each { |resource| sign_in(resource) }
redirect_to gestionnaire_procedures_path
else
flash[:alert] = 'Votre lien est invalide ou expiré, veuillez-vous reconnecter.'
redirect_to new_user_session_path
end
end
private
def error_procedure