You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.4 KiB
64 lines
1.4 KiB
<?php |
|
namespace frontend\models; |
|
|
|
use yii\base\Model; |
|
use yii\base\InvalidParamException; |
|
use common\models\User; |
|
|
|
/** |
|
* Password reset form |
|
*/ |
|
class ResetPasswordForm extends Model |
|
{ |
|
public $password; |
|
|
|
/** |
|
* @var \common\models\User |
|
*/ |
|
private $_user; |
|
|
|
|
|
/** |
|
* Creates a form model given a token. |
|
* |
|
* @param string $token |
|
* @param array $config name-value pairs that will be used to initialize the object properties |
|
* @throws \yii\base\InvalidParamException if token is empty or not valid |
|
*/ |
|
public function __construct($token, $config = []) |
|
{ |
|
if (empty($token) || !is_string($token)) { |
|
throw new InvalidParamException('Password reset token cannot be blank.'); |
|
} |
|
$this->_user = User::findByPasswordResetToken($token); |
|
if (!$this->_user) { |
|
throw new InvalidParamException('Wrong password reset token.'); |
|
} |
|
parent::__construct($config); |
|
} |
|
|
|
/** |
|
* @inheritdoc |
|
*/ |
|
public function rules() |
|
{ |
|
return [ |
|
['password', 'required'], |
|
['password', 'string', 'min' => 6], |
|
]; |
|
} |
|
|
|
/** |
|
* Resets password. |
|
* |
|
* @return bool if password was reset. |
|
*/ |
|
public function resetPassword() |
|
{ |
|
$user = $this->_user; |
|
$user->setPassword($this->password); |
|
$user->removePasswordResetToken(); |
|
|
|
return $user->save(false); |
|
} |
|
}
|
|
|