Browse Source

✨ feat: 增加统一登录登陆记录

Pchen. 9 months ago
parent
commit
d9184c64f7
2 changed files with 15 additions and 6 deletions
  1. 13 5
      apis/User/uniLogin/Login.js
  2. 2 1
      package.json

+ 13 - 5
apis/User/uniLogin/Login.js

@@ -1,9 +1,10 @@
 const API = require("../../../lib/API")
 const axios = require('axios')
 const { v4: uuidv4 } = require('uuid')
+const UAParser = require('ua-parser-js')
 const db = require("../../../plugin/DataBase/db")
 const config = require('../../../config.json')
-const { BaseStdResponse } = require("../../../BaseStdResponse");
+const { BaseStdResponse } = require("../../../BaseStdResponse")
 
 class Login extends API {
     constructor() {
@@ -41,7 +42,7 @@ class Login extends API {
             const session = uuidv4()
             const time = new Date().getTime()
 
-            let selectSql = 'SELECT uuid, permission FROM users WHERE social_uid = ? AND social_type = ?'
+            let selectSql = 'SELECT uuid, username, permission FROM users WHERE social_uid = ? AND social_type = ?'
             let selectRows = await db.query(selectSql, [social_uid, type || 'qq'])
 
             let uuid, username, permission
@@ -73,9 +74,9 @@ class Login extends API {
                     })
                 }
 
+                uuid = selectRows[0].uuid
                 username = selectRows[0].username
                 permission = selectRows[0].permission
-
             }
 
             res.json({
@@ -92,8 +93,15 @@ class Login extends API {
             })
 
             // 增加登录记录
-
-
+            try {
+                const userAgent = req.headers['user-agent']
+                const parser = new UAParser(userAgent)
+                const uaResult = parser.getResult()
+                let insertSql = 'INSERT INTO login_history (uuid, time, deviceInfo, type, ip) VALUES (?, ?, ?, ?, ?)'
+                await db.query(insertSql, [uuid, time, uaResult, type || 'qq', ip])
+            } catch (error) {
+                this.logger.error(`写入登录记录失败!${error}`)
+            }
         } catch (error) {
             this.logger.error(`获取用户信息失败!${error.message || 'api接口错误'}`)
             return res.json({

+ 2 - 1
package.json

@@ -21,6 +21,7 @@
     "puppeteer": "^23.9.0",
     "redis": "^4.7.0",
     "svg-captcha": "^1.4.0",
+    "ua-parser-js": "^2.0.4",
     "uuid": "^11.0.3"
   }
-}
+}