ChangeUsername.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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]{2,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: '用户名需在2到8位之间,且只能含有英文字母和汉字'
  27. })
  28. // 检查 session 是否有效
  29. if (!await AccessControl.checkSession(uuid, session)) {
  30. return res.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 > 0) {
  45. sql = 'SELECT wxid, avatar, email FROM users WHERE uuid = ?';
  46. let rows = await db.query(sql, [uuid]);
  47. if(!rows || rows.length === 0)
  48. return res.json({
  49. ...BaseStdResponse.DATABASE_ERR
  50. })
  51. res.json({
  52. ...BaseStdResponse.OK,
  53. data: {
  54. uuid,
  55. username: username,
  56. wxid: rows[0].wxid,
  57. email: rows[0].email,
  58. avatar: rows[0].avatar,
  59. session
  60. }
  61. });
  62. } else {
  63. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '操作失败!' });
  64. }
  65. }
  66. }
  67. module.exports.ChangeUsername = ChangeUsername;