ResetPasswordForm.php 1.38 KB
Newer Older
1
<?php
2
namespace frontend\models\forms;
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

use common\models\User;
use yii\base\InvalidParamException;
use yii\base\Model;
use Yii;

/**
 * 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
25
	 * @param array $config name-value pairs that will be used to initialize the object properties
26 27
	 * @throws \yii\base\InvalidParamException if token is empty or not valid
	 */
28
	public function __construct($token, $config = [])
29 30 31 32 33 34 35 36 37 38 39
	{
		if (empty($token) || !is_string($token)) {
			throw new InvalidParamException('Password reset token cannot be blank.');
		}
		$this->_user = User::find([
			'password_reset_token' => $token,
			'status' => User::STATUS_ACTIVE,
		]);
		if (!$this->_user) {
			throw new InvalidParamException('Wrong password reset token.');
		}
40
		parent::__construct($config);
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
	}

	/**
	 * @return array the validation rules.
	 */
	public function rules()
	{
		return [
			['password', 'required'],
			['password', 'string', 'min' => 6],
		];
	}

	/**
	 * Resets password.
	 * @return boolean if password was reset.
	 */
	public function resetPassword()
	{
		$user = $this->_user;
		if ($user->validate()) {
Alexander Makarov committed
62
			$user->password = $this->password;
63
			$user->removePasswordResetToken();
64 65 66 67 68 69 70
			return $user->save();
		} else {
			return false;
		}
	}
}