Browse Source

🐞 fix: 修复密码修改失败的问题

Pchen. 6 months ago
parent
commit
fbcaf106f1
1 changed files with 55 additions and 47 deletions
  1. 55 47
      apis/User/ChangePassword.js

+ 55 - 47
apis/User/ChangePassword.js

@@ -24,60 +24,68 @@ class ChangePassword extends API {
     }
     }
 
 
     async onRequest(req, res) {
     async onRequest(req, res) {
-        let { uuid, session, oldpassword, password } = req.body;
+        try {
+            let { uuid, session, oldpassword, password } = req.body;
 
 
-        if ([uuid, session, password].some(value => value === '' || value === null || value === undefined)) {
-            return res.json({
-                ...BaseStdResponse.MISSING_PARAMETER,
-                endpoint: 1513126
-            });
-        }
-
-        // 检查 session 是否有效
-        if (!await AccessControl.checkSession(uuid, session)) {
-            return res.status(401).json({
-                ...BaseStdResponse.ACCESS_DENIED,
-                endpoint: 48153145
-            });
-        }
-
-        password = atob(password);
-
-        if (!this.CheckPassword(password))
-            return res.json({
-                ...BaseStdResponse.ERR,
-                msg: '密码需在8到16位之间,且包含字母和数字'
-            })
-
-        if (oldpassword) {
-            oldpassword = atob(oldpassword);
-
-            let sql = 'SELECT email, password FROM users WHERE uuid = ? AND password IS NULL';
-            let rows = await db.query(sql, [uuid]);
-            if (!rows || rows.length === 0)
+            if ([uuid, session, password].some(value => value === '' || value === null || value === undefined)) {
                 return res.json({
                 return res.json({
-                    ...BaseStdResponse.ERR,
-                    msg: '暂时无法重设密码,请联系客服'
-                })
-
-            if (oldpassword !== '' && !bcryptjs.compareSync(oldpassword, rows[0].password))
+                    ...BaseStdResponse.MISSING_PARAMETER,
+                    endpoint: 1513126
+                });
+            }
+
+            // 检查 session 是否有效
+            if (!await AccessControl.checkSession(uuid, session)) {
+                return res.status(401).json({
+                    ...BaseStdResponse.ACCESS_DENIED,
+                    endpoint: 48153145
+                });
+            }
+
+            password = atob(password);
+
+            if (!this.CheckPassword(password))
                 return res.json({
                 return res.json({
                     ...BaseStdResponse.ERR,
                     ...BaseStdResponse.ERR,
-                    msg: '密码错误!'
+                    msg: '密码需在8到16位之间,且包含字母和数字'
                 })
                 })
-        }
 
 
-        const hashPassword = bcryptjs.hashSync(password, 10);
-        let sql = 'UPDATE users SET password = ? WHERE uuid = ?';
-        let result = await db.query(sql, [hashPassword, uuid]);
-
-        if (result && result.affectedRows > 0) {
-            res.json({
-                ...BaseStdResponse.OK
-            });
-        } else {
-            res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '操作失败!' });
+            if (oldpassword && oldpassword !== '') {
+                oldpassword = atob(oldpassword);
+
+                let sql = 'SELECT email, password FROM users WHERE uuid = ? AND password IS NULL';
+                let rows = await db.query(sql, [uuid]);
+                if (!rows || rows.length === 0)
+                    return res.json({
+                        ...BaseStdResponse.ERR,
+                        msg: '暂时无法重设密码,请联系客服'
+                    })
+
+                if (oldpassword !== '' && !bcryptjs.compareSync(oldpassword, rows[0].password))
+                    return res.json({
+                        ...BaseStdResponse.ERR,
+                        msg: '密码错误!'
+                    })
+            }
+
+            const hashPassword = bcryptjs.hashSync(password, 10);
+            let sql = 'UPDATE users SET password = ? WHERE uuid = ?';
+            let result = await db.query(sql, [hashPassword, uuid]);
+
+            if (result && result.affectedRows > 0) {
+                res.json({
+                    ...BaseStdResponse.OK
+                });
+            } else {
+                res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '操作失败!' });
+            }
+        } catch (error) {
+            return res.json({
+                ...BaseStdResponse.ERR,
+                msg: '密码更新失败,请联系客服'
+            })
         }
         }
+
     }
     }
 }
 }