/** * 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; } }