/** * Sends recovery message. * * @return bool */ public function sendRecoveryMessage() { if ($this->validate()) { $this->_user->sendRecoveryMessage(); return true; } return false; }
public function testRecoverable() { $this->user = User::findOne(1); $this->user->sendRecoveryMessage(); $this->specify('correct user confirmation url should be returned', function () { $needle = \Yii::$app->getUrlManager()->createAbsoluteUrl(['/user/recovery/reset', 'id' => $this->user->id, 'token' => $this->user->recovery_token]); verify($this->user->getRecoveryUrl())->contains($needle); }); $this->specify('confirmation token should become invalid after specified time', function () { \Yii::$app->getModule('user')->recoverWithin = $expirationTime = 86400; $user = new User(['recovery_token' => 'NNWJf_CoV8ocX3AsYK38CoOGkXUcpQK4', 'recovery_sent_at' => time()]); verify($user->getIsRecoveryPeriodExpired())->false(); $user = new User(['recovery_token' => 'NNWJf_CoV8ocX3AsYK38CoOGkXUcpQK4', 'recovery_sent_at' => time() - $expirationTime - 1]); verify($user->getIsRecoveryPeriodExpired())->true(); }); }