GetUserInfo.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. const API = require("../../lib/API")
  2. const db = require("../../plugin/DataBase/db")
  3. const AccessControl = require("../../lib/AccessControl")
  4. const Redis = require('../../plugin/DataBase/Redis')
  5. const { BaseStdResponse } = require("../../BaseStdResponse")
  6. const { getUserSocialBindings, toSocialBindingSummary } = require("../../lib/UserSocialBinding")
  7. class GetRepoList extends API {
  8. constructor() {
  9. super();
  10. this.setPath('/User/Info')
  11. this.setMethod('GET')
  12. }
  13. async onRequest(req, res) {
  14. let {
  15. uuid,
  16. session
  17. } = req.query
  18. if ([uuid, session].some(value => value === '' || value === null || value === undefined))
  19. return res.json({
  20. ...BaseStdResponse.MISSING_PARAMETER
  21. })
  22. // 检查 session
  23. if (!await AccessControl.checkSession(uuid, session))
  24. return res.status(401).json({
  25. ...BaseStdResponse.ACCESS_DENIED
  26. })
  27. let sql = 'SELECT uuid, username, permission AS roles, avatar, email, registTime FROM users WHERE uuid = ?'
  28. let rows = await db.query(sql, [uuid])
  29. if (!rows || rows.length === 0)
  30. return res.json({
  31. ...BaseStdResponse.MISSING_FILE,
  32. msg: '获取用户信息失败!'
  33. })
  34. const userSession = await Redis.get(`userSession:${uuid}`)
  35. const bindings = await getUserSocialBindings(uuid)
  36. const permissionCodes = await AccessControl.getUserPermissionCodes(uuid)
  37. res.json({
  38. ...BaseStdResponse.OK,
  39. data: {
  40. ...rows[0],
  41. session: userSession,
  42. permissionCodes,
  43. socialBindings: toSocialBindingSummary(bindings),
  44. boundTypes: bindings.map(binding => binding.social_type)
  45. }
  46. })
  47. }
  48. }
  49. module.exports.GetRepoList = GetRepoList;