|
@@ -1,12 +1,8 @@
|
|
-const md5 = require("md5");
|
|
|
|
const API = require("../../../lib/API");
|
|
const API = require("../../../lib/API");
|
|
const { BaseStdResponse } = require("../../../BaseStdResponse");
|
|
const { BaseStdResponse } = require("../../../BaseStdResponse");
|
|
-
|
|
|
|
const db = require("../../../plugin/DataBase/db");
|
|
const db = require("../../../plugin/DataBase/db");
|
|
-const {
|
|
|
|
- getUserInfo,
|
|
|
|
- getUserID
|
|
|
|
-} = require("../../../plugin/WXWork/GetInfo");
|
|
|
|
|
|
+const { getUserID } = require("../../../plugin/WXWork/GetInfo");
|
|
|
|
+const AccessControl = require("../../../lib/AccessControl");
|
|
|
|
|
|
class BindWXWork extends API {
|
|
class BindWXWork extends API {
|
|
constructor() {
|
|
constructor() {
|
|
@@ -15,43 +11,42 @@ class BindWXWork extends API {
|
|
this.setPath("/User/BindWXWork");
|
|
this.setPath("/User/BindWXWork");
|
|
}
|
|
}
|
|
|
|
|
|
- createSession(uuid, salt) {
|
|
|
|
- return md5(`${uuid}${salt}${new Date().getTime()}`);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
async onRequest(req, res) {
|
|
async onRequest(req, res) {
|
|
- const { code } = req.body;
|
|
|
|
- if (!code) {
|
|
|
|
|
|
+ const { uuid, session, code } = req.body;
|
|
|
|
+ if (!uuid || !session || !code) {
|
|
res.json({ ...BaseStdResponse.MISSING_PARAMETER, endpoint: 7841686 });
|
|
res.json({ ...BaseStdResponse.MISSING_PARAMETER, endpoint: 7841686 });
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 检查 session 是否有效
|
|
|
|
+ if (!await AccessControl.checkSession(uuid, session)) {
|
|
|
|
+ return res.json({
|
|
|
|
+ ...BaseStdResponse.ACCESS_DENIED,
|
|
|
|
+ endpoint: 48153145
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
try {
|
|
try {
|
|
const idRes = await getUserID(code);
|
|
const idRes = await getUserID(code);
|
|
if (!idRes || !idRes.success) {
|
|
if (!idRes || !idRes.success) {
|
|
- return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: `登录失败!${idRes.msg}` });
|
|
|
|
|
|
+ return res.json({ ...BaseStdResponse.ERR, endpoint: 7894377, msg: `绑定失败!${idRes.msg}` });
|
|
}
|
|
}
|
|
|
|
|
|
const wxid = idRes.userid;
|
|
const wxid = idRes.userid;
|
|
- const session = this.createSession(wxid, Math.random().toFixed(6).slice(-6));
|
|
|
|
-
|
|
|
|
- let sql = 'SELECT id, uuid, username, avatar, email FROM users WHERE wxid = ?';
|
|
|
|
- let rows = await db.query(sql, [wxid]);
|
|
|
|
|
|
|
|
- let id, result, uuid, username, avatar, email;
|
|
|
|
- if (rows.length > 0) {
|
|
|
|
- ({ id, uuid, username, avatar, email } = rows[0]);
|
|
|
|
- avatar = avatar && avatar != '' ? avatar : 'https://vthc.cn/img/avatar.png';
|
|
|
|
- const updateQuery = 'UPDATE users SET session = ? WHERE wxid = ?';
|
|
|
|
- result = await db.query(updateQuery, [session, id]);
|
|
|
|
- } else {
|
|
|
|
|
|
+ let sql = 'UPDATE users SET wxid = ? WHERE uuid = ?';
|
|
|
|
+ let result = await db.query(sql, [wxid, uuid]);
|
|
|
|
+ if (!result || result.affectedRows !== 1)
|
|
return res.json({
|
|
return res.json({
|
|
- ...BaseStdResponse.USER_NOT_EXISTS
|
|
|
|
|
|
+ ...BaseStdResponse.DATABASE_ERR
|
|
})
|
|
})
|
|
- }
|
|
|
|
|
|
|
|
- if (result && result.affectedRows > 0) {
|
|
|
|
- return res.json({
|
|
|
|
|
|
+ sql = 'SELECT uuid, username, avatar, email, session FROM users WHERE uuid = ?';
|
|
|
|
+ let rows = await db.query(sql, [uuid]);
|
|
|
|
+
|
|
|
|
+ if (rows.length > 0) {
|
|
|
|
+ let { id, uuid, username, avatar, email, session } = rows[0];
|
|
|
|
+ res.json({
|
|
...BaseStdResponse.OK,
|
|
...BaseStdResponse.OK,
|
|
data: {
|
|
data: {
|
|
uuid,
|
|
uuid,
|
|
@@ -62,12 +57,15 @@ class BindWXWork extends API {
|
|
session
|
|
session
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
- return res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '登录失败!' });
|
|
|
|
|
|
+ return res.json({
|
|
|
|
+ ...BaseStdResponse.USER_NOT_EXISTS
|
|
|
|
+ })
|
|
}
|
|
}
|
|
} catch (error) {
|
|
} catch (error) {
|
|
- this.logger.error(`企业微信登录失败!${error.stack}`)
|
|
|
|
- return res.json({ ...BaseStdResponse.ERR, endpoint: 7894379, msg: '登录失败!' });
|
|
|
|
|
|
+ this.logger.error(`绑定企业微信失败!${error.stack}`)
|
|
|
|
+ return res.json({ ...BaseStdResponse.ERR, endpoint: 7894379, msg: '绑定失败!' });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|