ChangePassword.php
1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
namespace thread\modules\user\models\form;
use Yii;
use yii\helpers\ArrayHelper;
/**
* Class ChangePasswordForm
*
* @package thread\modules\user\models
* @author FilamentV <vortex.filament@gmail.com>
* @copyright (c), Thread
*/
class ChangePassword extends CommonForm
{
const FLASH_KEY = 'ChangePassword';
/** @var bool */
public $isNewRecord = false;
/**
* @return array
*/
public function rules()
{
$rules = [
[['password_confirmation'], 'required'],
[['password', 'password_old'], 'required'],
[['password_old'], 'validateOLDPassword'],
[['password_confirmation'], 'compare', 'compareAttribute' => 'password',],
[['password', 'password_confirmation'], 'required'],
];
return ArrayHelper::merge($rules, parent::rules());
}
/**
* @return array
*/
public function scenarios()
{
return [
'passwordChange' => ['password', 'password_confirmation', 'password_old'],
'adminPasswordChange' => ['password', 'password_confirmation'],
];
}
/**
* Validate password_old on password change scenario
*/
public function validateOLDPassword()
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || !$user->validatePassword($this->password_old)) {
$this->addError('password_old', Yii::t('app', 'Incorrect password.'));
}
}
}
}