Ejemplo n.º 1
0
 /**
  * Si le formulaire est valide, on crée une clé d'identification & on expédie à l'utilisateur un mail de ré-initialisation
  *
  * @return bool
  */
 public function processRequest()
 {
     if ($this->validate()) {
         try {
             /** @var User $user */
             if (!($user = User::findIdentityByEmail($this->email))) {
                 // CHECK_SECURITY
                 // On ne devrait pas avoir ce cas là puisque l'existence du mail dans la base de données a été vérifiée dans lr formulaire
                 // Il s'agit sans doute d'une tentative de piratage
                 return false;
             }
             $user->reset_password_token = Yii::$app->getSecurity()->generateRandomString();
             if (!$user->save()) {
                 Yii::error('Erreur sur $user->save()', __METHOD__);
                 return false;
             }
             Yii::$app->mailer->compose('/mail/askResetPassword', compact('user'))->setFrom(Yii::$app->params['adminEmail'])->setTo(h::safeRecipientEmail($user->email))->setSubject(HUsers::t('titles', 'Your password reset request'))->send();
             return true;
         } catch (Exception $x) {
             Yii::error($x->getMessage(), __METHOD__);
             return false;
         }
     } else {
         return false;
     }
 }