Bladeren bron

账户中的salt字段长度统一为6,手机端修改密码

wufeng 2 jaren geleden
bovenliggende
commit
c3d12d48bd

+ 1 - 1
app/admin/command/HandleBatchAccount.php

@@ -84,7 +84,7 @@ class HandleBatchAccount extends Command
         $insert = 'INSERT INTO `' . Config::get('database.connections.mysql.database') . '`.`' . Config::get('database.connections.mysql.prefix') . 'account` (`username`,`pwd`,`salt`,`password`,`company_id`,`card_id`,`status`,`is_del`,`starttime`,`expiretime`,`createrid`,`creater`,`addtime`,`updaterid`,`updater`,`updatetime`) VALUES ';
         for ($i = 0; $i <= 9999; $i++) {
             $pwd = randomkeys(6);
-            $salt = randomkeys(4);
+            $salt = randomkeys(6);
 
             //拼接SQL语句
             $insert .= "('" . self::$account_username_prefix . $rs['username_prefix'] . $rs['username_year'] . str_pad((string)$i, 4, '0', STR_PAD_LEFT) . "','" . $pwd . "','" . $salt . "','" . getPassword($pwd, $salt) . "'," . $rs['company_id'] . "," . $rs['card_id'] . "," . AccountModel::$status_not_active . "," . CommonModel::$del_normal . ",'" . $rs['starttime'] . "','" . $rs['expiretime'] . "'," . $rs['createrid'] . ",'" . $rs['creater'] . "','" . $date . "'," . $rs['createrid'] . ",'" . $rs['creater'] . "','" . $date . "'),";

+ 1 - 1
app/admin/logic/AccountLogic.php

@@ -51,7 +51,7 @@ class AccountLogic extends BaseLogic
         if (!$rs) return json_show(CommonModel::$error_param, '该账号已存在');
 
         $pwd = randomkeys(6);
-        $salt = randomkeys(4);
+        $salt = randomkeys(6);
         $date = date('Y-m-d H:i:s');
 
         $res = AccountModel::create([

+ 5 - 0
app/mobile/config/validate_rules.php

@@ -38,5 +38,10 @@ return [
         'mobile|联系电话' => 'require|mobile',
     ],
 
+    //修改密码
+    'changePassword'=>[
+        'old_password|旧密码' => 'require|min:6|max:255',
+        'new_password|新密码' => 'require|min:6|max:255',
+    ],
 
 ];

+ 11 - 0
app/mobile/controller/Account.php

@@ -37,6 +37,17 @@ class Account extends BaseController
         return AccountLogic::info();
     }
 
+    //更改密码
+    public function updatePassword(){
+        $param = $this->request->only(['old_password', 'new_password'], 'post');
+
+        $val = Validate::rule(Config::get('validate_rules.changePassword'));
+
+        if (!$val->check($param)) throw new ValidateException($val->getError());
+
+        return AccountLogic::updatePassword($param);
+    }
+
     //省市区编码
     public function area()
     {

+ 32 - 1
app/mobile/logic/AccountLogic.php

@@ -86,7 +86,38 @@ class AccountLogic extends BaseLogic
             ->findOrEmpty()
             ->toArray();
 
-        return $info ? json_show(CommonModel::$success, '获取账户详情成功', $info) : json_show(CommonModel::$error_param, '账户为空');
+        return $info ? json_show(CommonModel::$success, '获取账户详情成功', $info) : json_show(CommonModel::$error_token, '账户为空');
+
+    }
+
+    //更改密码
+    public static function updatePassword(array $data = []): Json
+    {
+        $rs = AccountModel::field('id,password,salt')
+            ->where(['is_del' => CommonModel::$del_normal, 'id' => self::$aid])
+            ->findOrEmpty()
+            ->getData();//password,salt这两个字段在模型里定义了隐藏,所以要在这里使用getData方法获取原始数据
+
+        if (empty($rs)) return json_show(CommonModel::$error_token, '该账户不存在');
+        
+        if (getPassword($data['old_password'], $rs['salt']) != $rs['password']) return json_show(CommonModel::$error_param, '密码错误');
+
+        $salt = randomkeys(6);
+        $password = getPassword($data['new_password'], $salt);
+
+        $da = [
+            'pwd' => $data['new_password'],
+            'salt' => $salt,
+            'password' => $password,
+            'updaterid' => self::$aid,
+            'updater' => self::$aname,
+            'updatetime' => date('Y-m-d H:i:s'),
+        ];
+
+        $rs = AccountModel::where(['id' => self::$aid, 'is_del' => CommonModel::$del_normal])
+            ->save($da);
+
+        return $rs ? json_show(CommonModel::$success, '更改密码成功') : json_show(CommonModel::$error_param, '更改密码失败');
 
     }
 

+ 1 - 0
app/mobile/route/app.php

@@ -5,6 +5,7 @@ use think\facade\Route;
 Route::rule('login', 'Account/login');//登录
 Route::rule('logout', 'Account/logout');//登出
 Route::rule('info', 'Account/info');//账户详情
+Route::rule('updatePassword', 'Account/updatePassword');//修改密码
 Route::rule('video', 'Account/getVideoList');//视频列表
 Route::rule('area', 'Account/area');//省市区编码
 Route::rule('theme', 'Account/theme');//手机主题