99 lines
2.9 KiB
PHP
99 lines
2.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @author Any
|
|
* @description KISS
|
|
* @date 2021-5-13
|
|
* @version 1.0.0
|
|
*
|
|
* _____LOG_____
|
|
*
|
|
*/
|
|
namespace app\modules\api\models;
|
|
|
|
|
|
use app\models\User;
|
|
use app\models\sms\SmsMsgHelper;
|
|
use app\models\sms\SmsTpl;
|
|
use app\components\EncryptHelper;
|
|
|
|
class ResetPasswordForm extends ApiModel
|
|
{
|
|
public $mobile;
|
|
public $mobile_prefix;
|
|
public $code;
|
|
|
|
public $cx_mch_id;
|
|
|
|
public $password;
|
|
public $password_repeat;
|
|
|
|
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['mobile', 'mobile_prefix', 'code', 'password', 'password_repeat'], 'trim'],
|
|
[['mobile', 'mobile_prefix', 'code', 'password', 'password_repeat'], 'string'],
|
|
[['cx_mch_id', ], 'integer'],
|
|
[['mobile_prefix'], 'default', 'value' => 86],
|
|
[['mobile', 'code', 'cx_mch_id', 'password', 'password_repeat'], 'required'],
|
|
[['password','password_repeat'], 'string', 'min' => 6],
|
|
[['password'],'match', 'pattern' => '/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[-#_*%$])^.{6,16}$/', 'message' => '密码需包含大小写字母以及字符殊符号 #-_*%$组成', ],
|
|
['password', 'compare', 'message' => '两次密码必须一致'],
|
|
];
|
|
}
|
|
|
|
|
|
public function attributeLabels() {
|
|
return [
|
|
'mobile' => '手机号',
|
|
'mobile_prefix' => '手机号国家代码',
|
|
'code' => '验证码',
|
|
'password' => '密码',
|
|
'password_repeat' => '重复密码'
|
|
];
|
|
}
|
|
|
|
public function reset()
|
|
{
|
|
if(!$this->validate()){
|
|
return $this->getModelError();
|
|
}
|
|
$mobile_phone = EncryptHelper::encryptMobilePhone($this->mobile);
|
|
if(!$mobile_phone){
|
|
return [
|
|
'code' => 1,
|
|
'msg' => '系统内部异常'
|
|
];
|
|
}
|
|
$user = User::findOne([
|
|
'cx_mch_id' => $this->cx_mch_id,
|
|
'mobile_phone' => $mobile_phone,
|
|
'mobile_prefix' => $this->mobile_prefix,
|
|
'is_delete' => 0,
|
|
'status' => User::STATUS_NORMAL
|
|
]);
|
|
if($user == null){
|
|
return [
|
|
'code' => 1,
|
|
'msg' => '手机号未绑定任何账号',
|
|
];
|
|
}
|
|
//验证码校验
|
|
$sms_sender = new SmsMsgHelper($this->cx_mch_id);
|
|
$res = $sms_sender->validate($this->mobile, $this->code, SmsTpl::TYPE_MODIFY_PASSWORD, $this->mobile_prefix);
|
|
if($res['code'] != 0){
|
|
return $res;
|
|
}
|
|
//重置密码
|
|
$user->password = \Yii::$app->security->generatePasswordHash($this->password);
|
|
if(!$user->save()){
|
|
return $this->getModelError($user);
|
|
}
|
|
return [
|
|
'code' => 0,
|
|
'msg' => '密码重置成功'
|
|
];
|
|
}
|
|
|
|
} |