ChangeUsername.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const API = require("../../lib/API");
  2. const db = require("../../plugin/DataBase/db");
  3. const { BaseStdResponse } = require("../../BaseStdResponse");
  4. const AccessControl = require("../../lib/AccessControl");
  5. class ChangeUsername extends API {
  6. constructor() {
  7. super();
  8. this.setMethod("POST");
  9. this.setPath("/User/ChangeUsername");
  10. }
  11. checkUsername(username) {
  12. const regex = /^[\u4e00-\u9fa5A-Za-z0-9]{4,8}$/;
  13. return regex.test(username);
  14. }
  15. async onRequest(req, res) {
  16. let { uuid, session, username } = req.body;
  17. if ([uuid, session, username].some(value => value === '' || value === null || value === undefined)) {
  18. return res.json({
  19. ...BaseStdResponse.MISSING_PARAMETER,
  20. endpoint: 1513126
  21. });
  22. }
  23. if (!this.checkUsername(username))
  24. return res.json({
  25. ...BaseStdResponse.ERR,
  26. msg: '用户名需在4到8位之间,且只能含有英文字母和汉字'
  27. })
  28. // 检查 session 是否有效
  29. if (!await AccessControl.checkSession(uuid, session)) {
  30. return res.status(401).json({
  31. ...BaseStdResponse.ACCESS_DENIED,
  32. endpoint: 48153145
  33. });
  34. }
  35. let sql = 'SELECT username FROM users WHERE username = ?';
  36. let UserRows = await db.query(sql, [username]);
  37. if (UserRows.length > 0)
  38. return res.json({
  39. ...BaseStdResponse.USER_ALREADY_EXISTS,
  40. msg: '该用户名已被占用!'
  41. })
  42. sql = 'UPDATE users SET username = ? WHERE uuid = ?';
  43. let result = await db.query(sql, [username, uuid]);
  44. if (!result || result.affectedRows !== 1)
  45. return res.json({
  46. ...BaseStdResponse.ERR,
  47. msg: '更新用户名失败'
  48. });
  49. res.json({
  50. ...BaseStdResponse.OK
  51. });
  52. }
  53. }
  54. module.exports.ChangeUsername = ChangeUsername;