В базе хранится хеш пароля, который генерируется этим методом:
$user->password_hash = Yii::$app->security->generatePasswordHash($password, $hash);
Когда вы делаете замену пароля, вы проверяете текущий пароль пользователя так:
public $old_password;
private $user;
public function __construct(User $user, $config = []){
$this->user = $user;
parent::__construct($config);
}
public function rules() {
return [
// ...
['old_password', 'validateOldPassword'],
];
}
public function validateOldPassword($attribute, $params, Validator $validator){
if (!\Yii::$app->security->validatePassword($this->{$attribute}, $this->user->password_hash)){
$this->addError($attribute, 'Старый пароль указан неверно!');
}
}