ActiveAccount.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const API = require("../../lib/API.js");
  2. const db = require("../../plugin/DataBase/db.js");
  3. const AccessControl = require("../../lib/AccessControl");
  4. const ic = require("../../lib/IC/IC").IC;
  5. const { BaseStdResponse } = require("../../BaseStdResponse.js");
  6. // 激活教务账号
  7. class ActiveAccount extends API {
  8. constructor() {
  9. super();
  10. this.setPath('/JW/ActiveAccount')
  11. this.setMethod('POST')
  12. }
  13. async checkJwAccount(uuid, username) {
  14. const sql = 'SELECT password FROM jw_account WHERE create_user = ? AND username = ?'
  15. const rows = await db.query(sql, [uuid, username]);
  16. if (!rows || rows.length !== 1 || !rows[0].password)
  17. return false
  18. return rows[0].password;
  19. }
  20. async onRequest(req, res) {
  21. let { uuid, session, username } = req.body
  22. if ([uuid, session, username].some(value => value === '' || value === null || value === undefined))
  23. return res.json({
  24. ...BaseStdResponse.MISSING_PARAMETER,
  25. endpoint: 1513126
  26. })
  27. if (!await AccessControl.checkSession(uuid, session))
  28. return res.status(401).json({
  29. ...BaseStdResponse.ACCESS_DENIED
  30. })
  31. const password = await this.checkJwAccount(uuid, username)
  32. if (!password)
  33. res.json({
  34. ...BaseStdResponse.ERR,
  35. msg: '教务系统账号未绑定'
  36. })
  37. try {
  38. let cookie = await ic.resetCookie(username, password)
  39. let user = await ic.getUserInfo(cookie)
  40. if (user.code === 300) {
  41. cookie = await ic.resetCookie(username, password)
  42. user = await ic.getUserInfo(cookie)
  43. }
  44. const { trueName, className, deptName } = user
  45. const time = new Date().getTime()
  46. let sql = 'UPDATE jw_account SET state = 1, update_time = ?, realname = ?, className = ?, deptName = ? WHERE username = ?'
  47. let r = await db.query(sql, [time, trueName, className, deptName, username])
  48. if (r && r.affectedRows > 0) {
  49. res.json({
  50. ...BaseStdResponse.OK,
  51. id: r.insertId
  52. })
  53. } else {
  54. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '激活账号失败!数据库错误' })
  55. }
  56. } catch (err) {
  57. res.json({
  58. ...BaseStdResponse.ERR,
  59. msg: `激活账号失败!${err.message || ''}`,
  60. });
  61. }
  62. }
  63. }
  64. module.exports.ActiveAccount = ActiveAccount