2019-08-06 11:02:54 +02:00
class Instructeurs :: ActivateController < ApplicationController
2018-10-30 18:24:29 +01:00
include TrustedDeviceConcern
2018-04-27 12:29:01 +02:00
def new
2019-08-06 11:02:54 +02:00
@instructeur = Instructeur . with_reset_password_token ( params [ :token ] )
2018-04-27 12:29:01 +02:00
2019-08-06 11:02:54 +02:00
if @instructeur
# the instructeur activates its account from an email
2019-02-19 12:40:19 +01:00
trust_device ( Time . zone . now )
2018-10-30 18:24:29 +01:00
else
2018-09-18 12:06:27 +02:00
flash . alert = " Le lien de validation du compte instructeur a expiré, #{ helpers . contact_link ( 'contactez-nous' , tags : 'lien expiré' ) } pour obtenir un nouveau lien. "
2018-04-27 12:29:01 +02:00
redirect_to root_path
end
end
def create
2019-08-06 11:02:54 +02:00
password = create_instructeur_params [ :password ]
instructeur = Instructeur . reset_password_by_token ( {
2018-04-27 12:29:01 +02:00
password : password ,
password_confirmation : password ,
2019-08-06 11:02:54 +02:00
reset_password_token : create_instructeur_params [ :reset_password_token ]
2018-04-27 12:29:01 +02:00
} )
2019-08-06 11:02:54 +02:00
if instructeur && instructeur . errors . empty?
sign_in ( instructeur , scope : :instructeur )
try_to_authenticate ( User , instructeur . email , password )
try_to_authenticate ( Administrateur , instructeur . email , password )
2018-04-27 12:29:01 +02:00
flash . notice = " Mot de passe enregistré "
2019-08-06 11:02:54 +02:00
redirect_to instructeur_procedures_path
2018-04-27 12:29:01 +02:00
else
2019-08-06 11:02:54 +02:00
flash . alert = instructeur . errors . full_messages
redirect_to instructeur_activate_path ( token : create_instructeur_params [ :reset_password_token ] )
2018-04-27 12:29:01 +02:00
end
end
private
2019-08-06 11:02:54 +02:00
def create_instructeur_params
params . require ( :instructeur ) . permit ( :reset_password_token , :password )
2018-04-27 12:29:01 +02:00
end
def try_to_authenticate ( klass , email , password )
resource = klass . find_for_database_authentication ( email : email )
if resource & . valid_password? ( password )
sign_in resource
resource . force_sync_credentials
end
end
end