Browse Source

✨ feat: 使用邮件验证

Pchen. 2 months ago
parent
commit
29ea29c738
2 changed files with 36 additions and 36 deletions
  1. 2 2
      apis/Public/GetAppVersion.js
  2. 34 34
      apis/User/Register.js

+ 2 - 2
apis/Public/GetAppVersion.js

@@ -13,8 +13,8 @@ class GetAppVersion extends API {
         res.json({
         res.json({
             ...BaseStdResponse.OK,
             ...BaseStdResponse.OK,
             data: {
             data: {
-                version: '1.7',
-                msg: '\n更新内容:\n1.自动乐跑支持设定乐跑目标次数,达到目标次数后将不再自动乐跑\n2.修复部分用户无法添加乐跑账号的问题\n'
+                version: '1.8',
+                msg: '\n更新内容:\n1.修复已知问题,优化用户体验'
             }
             }
         })
         })
     }
     }

+ 34 - 34
apis/User/Register.js

@@ -32,9 +32,9 @@ class Register extends API {
     }
     }
 
 
     async onRequest(req, res) {
     async onRequest(req, res) {
-        let { username, password, captcha, id } = req.body
+        let { username, password, code, id, email } = req.body
 
 
-        if ([username, password, captcha, id].some(value => value === '' || value === null || value === undefined))
+        if ([username, password, code, id, email].some(value => value === '' || value === null || value === undefined))
             return res.json({
             return res.json({
                 ...BaseStdResponse.MISSING_PARAMETER
                 ...BaseStdResponse.MISSING_PARAMETER
             })
             })
@@ -53,39 +53,39 @@ class Register extends API {
                 msg: '密码需在8到16位之间,且包含字母和数字'
                 msg: '密码需在8到16位之间,且包含字母和数字'
             })
             })
 
 
-        // try {
-        //     const VerifyCode = await Redis.get(`email:${email}`);
-        //     if (!VerifyCode || VerifyCode != code)
-        //         return res.json({
-        //             ...BaseStdResponse.SMS_CHECK_FAIL,
-        //             msg: '邮箱验证码输入错误或已过期'
-        //         })
-
-        // } catch (err) {
-        //     this.logger.error(`验证邮箱验证码失败!${err.stack}`);
-        //     return res.json({
-        //         ...BaseStdResponse.DATABASE_ERR,
-        //         msg: '验证失败!'
-        //     })
-        // }
-
         try {
         try {
-            const code = await Redis.get(`captcha:${id}`)
-            if (!code || code != captcha.toLowerCase())
+            const VerifyCode = await Redis.get(`email:${email}`);
+            if (!VerifyCode || VerifyCode != code)
                 return res.json({
                 return res.json({
                     ...BaseStdResponse.SMS_CHECK_FAIL,
                     ...BaseStdResponse.SMS_CHECK_FAIL,
-                    msg: '验证码输入错误或已过期'
+                    msg: '邮箱验证码输入错误或已过期'
                 })
                 })
 
 
-            await Redis.del(`captcha:${id}`)
         } catch (err) {
         } catch (err) {
-            this.logger.error(`验证图片验证码失败!${err.stack}`)
+            this.logger.error(`验证邮箱验证码失败!${err.stack}`);
             return res.json({
             return res.json({
                 ...BaseStdResponse.DATABASE_ERR,
                 ...BaseStdResponse.DATABASE_ERR,
                 msg: '验证失败!'
                 msg: '验证失败!'
             })
             })
         }
         }
 
 
+        // try {
+        //     const code = await Redis.get(`captcha:${id}`)
+        //     if (!code || code != captcha.toLowerCase())
+        //         return res.json({
+        //             ...BaseStdResponse.SMS_CHECK_FAIL,
+        //             msg: '验证码输入错误或已过期'
+        //         })
+
+        //     await Redis.del(`captcha:${id}`)
+        // } catch (err) {
+        //     this.logger.error(`验证图片验证码失败!${err.stack}`)
+        //     return res.json({
+        //         ...BaseStdResponse.DATABASE_ERR,
+        //         msg: '验证失败!'
+        //     })
+        // }
+
         let sql = 'SELECT username FROM users WHERE username = ?';
         let sql = 'SELECT username FROM users WHERE username = ?';
         let UsernameRows = await db.query(sql, [username]);
         let UsernameRows = await db.query(sql, [username]);
         if (UsernameRows.length > 0)
         if (UsernameRows.length > 0)
@@ -94,31 +94,31 @@ class Register extends API {
                 msg: '用户名已被占用!'
                 msg: '用户名已被占用!'
             })
             })
 
 
-        // sql = 'SELECT email FROM users WHERE email = ?';
-        // let EmailRows = await db.query(sql, [email]);
-        // if (EmailRows.length > 0)
-        //     return res.json({
-        //         ...BaseStdResponse.USER_ALREADY_EXISTS,
-        //         msg: '该邮箱已被注册!'
-        //     })
+        sql = 'SELECT email FROM users WHERE email = ?';
+        let EmailRows = await db.query(sql, [email]);
+        if (EmailRows.length > 0)
+            return res.json({
+                ...BaseStdResponse.USER_ALREADY_EXISTS,
+                msg: '该邮箱已被注册!'
+            })
 
 
         const uuid = uuidv4()
         const uuid = uuidv4()
         const hashPassword = bcryptjs.hashSync(password, 10);
         const hashPassword = bcryptjs.hashSync(password, 10);
         const time = new Date().getTime()
         const time = new Date().getTime()
 
 
         sql = 'INSERT INTO users (uuid, username, email, password, registTime) VALUES (?, ?, ?, ?, ?)';
         sql = 'INSERT INTO users (uuid, username, email, password, registTime) VALUES (?, ?, ?, ?, ?)';
-        let result = await db.query(sql, [uuid, username, '未设置', hashPassword, time]);
+        let result = await db.query(sql, [uuid, username, email, hashPassword, time]);
 
 
         if (result && result.affectedRows > 0) {
         if (result && result.affectedRows > 0) {
             // 注册成功后删除邮箱对应的验证码 避免注册失败后重复获取
             // 注册成功后删除邮箱对应的验证码 避免注册失败后重复获取
-            // await Redis.del(`email:${email}`);
+            await Redis.del(`email:${email}`)
 
 
             res.json({
             res.json({
                 ...BaseStdResponse.OK
                 ...BaseStdResponse.OK
             })
             })
-            // await EmailTemplate.registerSuccess(email, username)
+            await EmailTemplate.registerSuccess(email, username)
         } else {
         } else {
-            res.json({ ...BaseStdResponse.ERR, msg: '注册失败!' });
+            res.json({ ...BaseStdResponse.ERR, msg: '注册失败!' })
         }
         }
     }
     }
 }
 }