demarches-normaliennes/app/controllers/users/sessions_controller.rb

85 lines
2.3 KiB
Ruby
Raw Normal View History

2019-08-09 17:32:13 +02:00
class Users::SessionsController < Devise::SessionsController
include ProcedureContextConcern
2018-10-30 18:24:29 +01:00
include TrustedDeviceConcern
include ActionView::Helpers::DateHelper
layout 'procedure_context', only: [:new, :create]
before_action :restore_procedure_context, only: [:new, :create]
# POST /resource/sign_in
def create
user = User.find_by(email: params[:user][:email])
if user&.valid_password?(params[:user][:password])
user.update(loged_in_with_france_connect: nil)
end
super
end
2015-09-23 10:02:01 +02:00
def link_sent
2021-12-15 13:44:12 +01:00
if Devise.email_regexp.match?(params[:email])
@email = params[:email]
else
redirect_to root_path
end
end
# DELETE /resource/sign_out
2015-10-07 16:38:29 +02:00
def destroy
if user_signed_in?
connected_with_france_connect = current_user.loged_in_with_france_connect
current_user.update(loged_in_with_france_connect: '')
2015-10-07 16:38:29 +02:00
sign_out :user
case connected_with_france_connect
when User.loged_in_with_france_connects.fetch(:particulier)
2018-01-11 14:04:24 +01:00
redirect_to FRANCE_CONNECT[:particulier][:logout_endpoint]
return
end
2015-10-07 16:38:29 +02:00
end
respond_to_on_destroy
2015-10-07 16:38:29 +02:00
end
2015-09-23 10:02:01 +02:00
def no_procedure
clear_stored_location_for(:user)
redirect_to new_user_session_path
end
def sign_in_by_link
instructeur = Instructeur.find(params[:id])
trusted_device_token = instructeur
.trusted_device_tokens
.find_by(token: params[:jeton])
if trusted_device_token.nil?
flash[:alert] = 'Votre lien est invalide.'
redirect_to root_path
elsif trusted_device_token.token_valid?
trust_device(trusted_device_token.created_at)
period = ((trusted_device_token.created_at + TRUSTED_DEVICE_PERIOD) - Time.zone.now).to_i / ActiveSupport::Duration::SECONDS_PER_DAY
flash.notice = "Merci davoir confirmé votre connexion. Votre navigateur est maintenant authentifié pour #{period} jours."
2018-10-30 18:24:29 +01:00
# redirect to procedure'url if stored by store_location_for(:user) in dossiers_controller
# redirect to root_path otherwise
2019-02-01 17:17:10 +01:00
if instructeur_signed_in?
2019-02-01 17:17:10 +01:00
redirect_to after_sign_in_path_for(:user)
else
redirect_to new_user_session_path
end
else
flash[:alert] = 'Votre lien est expiré, un nouveau vient de vous être envoyé.'
2019-02-01 17:17:10 +01:00
send_login_token_or_bufferize(instructeur)
redirect_to link_sent_path(email: instructeur.email)
end
end
2015-09-23 10:02:01 +02:00
end