/** * @return User $user */ private function getUser() { if (!$this->user) { $this->user = User::findIdentityByEmail($this->email); } return $this->user; }
/** * Finds user by [[username]] * * @return User|null */ public function getUser() { if ($this->_user === false) { $this->_user = User::findIdentityByEmail($this->email); } return $this->_user; }
/** * 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; } }
/** * Si on met à jour un email depuis le backend admin, il faut s'assurer que la nouvelle adresse mail sn'est pas déjà prise * * @param string $attribute the attribute currently being validated */ public function validateUpdatedEmail($attribute) { if (!$this->hasErrors()) { if ($newEmail = hArray::getValue($this->getDirtyAttributes(), 'email')) { if (User::findIdentityByEmail($newEmail)) { $this->addError($attribute, HUsers::t('messages', 'This user already exists')); } } } }