2018-09-26 09:01:33 +02:00
require 'zxcvbn'
2018-01-11 14:18:17 +01:00
class Administrateurs :: ActivateController < ApplicationController
2018-10-30 18:24:29 +01:00
include TrustedDeviceConcern
2018-01-11 14:18:17 +01:00
def new
@administrateur = Administrateur . find_inactive_by_token ( params [ :token ] )
2018-10-30 18:24:29 +01:00
if @administrateur
# the administrateur 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 d'administrateur a expiré, #{ helpers . contact_link ( 'contactez-nous' , tags : 'lien expiré' ) } pour obtenir un nouveau lien. "
2018-01-11 14:18:17 +01:00
redirect_to root_path
end
end
def create
2018-04-11 17:15:44 +02:00
password = update_administrateur_params [ :password ]
2018-01-11 14:18:17 +01:00
administrateur = Administrateur . reset_password (
update_administrateur_params [ :reset_password_token ] ,
2018-04-11 17:15:44 +02:00
password
2018-01-11 14:18:17 +01:00
)
if administrateur && administrateur . errors . empty?
sign_in ( administrateur , scope : :administrateur )
2018-04-11 17:15:44 +02:00
try_to_authenticate ( User , administrateur . email , password )
try_to_authenticate ( Gestionnaire , administrateur . email , password )
2018-01-11 14:18:17 +01:00
flash . notice = " Mot de passe enregistré "
redirect_to admin_procedures_path
else
flash . alert = administrateur . errors . full_messages
redirect_to admin_activate_path ( token : update_administrateur_params [ :reset_password_token ] )
end
end
2018-09-26 09:01:33 +02:00
def test_password_strength
2018-09-27 15:11:22 +02:00
@score = Zxcvbn . test ( params [ :administrateur ] [ :password ] , [ ] , ZXCVBN_DICTIONNARIES ) . score
2018-09-26 09:01:33 +02:00
end
2018-01-11 14:18:17 +01:00
private
def update_administrateur_params
params . require ( :administrateur ) . permit ( :reset_password_token , :password )
end
2018-04-11 17:15:44 +02:00
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
2018-01-11 14:18:17 +01:00
end