60 lines
1.3 KiB
PHP
60 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace member\models\forms;
|
|
|
|
use common\core\BaseModel;
|
|
use member\models\User;
|
|
use yii\base\Exception;
|
|
|
|
class UpdatePassForm extends BaseModel
|
|
{
|
|
public $old_pass;
|
|
public $new_pass;
|
|
|
|
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['old_pass', 'new_pass'], 'required'],
|
|
[['old_pass', 'new_pass'], 'string'],
|
|
['old_pass', 'validatePassword'],
|
|
];
|
|
}
|
|
public function attributeLabels()
|
|
{
|
|
return [
|
|
'old_pass' => '旧密码',
|
|
'new_pass' => '新密码',
|
|
];
|
|
}
|
|
public function validatePassword($attribute, $params)
|
|
{
|
|
/* @var User $user */
|
|
$user = \Yii::$app->user->identity;
|
|
|
|
if(!$user->validatePassword($this->old_pass)){
|
|
$this->addError($attribute, '旧密码错误');
|
|
}
|
|
}
|
|
|
|
public function updatePassword()
|
|
{
|
|
if (!$this->validate()){
|
|
throw new \yii\db\Exception($this->getErrorMsg());
|
|
}
|
|
|
|
$t = \Yii::$app->db->beginTransaction();
|
|
try {
|
|
/* @var User $user */
|
|
$user = \Yii::$app->user->identity;
|
|
$user->setPassword($this->new_pass);
|
|
$user->saveOrFail();
|
|
|
|
$t->commit();
|
|
return [];
|
|
} catch (Exception $e) {
|
|
$t->rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
} |