|
@@ -0,0 +1,79 @@
|
|
|
|
+const API = require("../../../lib/API");
|
|
|
|
+const db = require("../../../plugin/DataBase/db");
|
|
|
|
+const { BaseStdResponse } = require("../../../BaseStdResponse");
|
|
|
|
+const AccessControl = require("../../../lib/AccessControl");
|
|
|
|
+
|
|
|
|
+class ChangeUsername extends API {
|
|
|
|
+ constructor() {
|
|
|
|
+ super();
|
|
|
|
+
|
|
|
|
+ this.setMethod("POST");
|
|
|
|
+ this.setPath("/User/ChangeUsername");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ checkUsername(username) {
|
|
|
|
+ const regex = /^[\u4e00-\u9fa5A-Za-z0-9]{2,8}$/;
|
|
|
|
+ return regex.test(username);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ async onRequest(req, res) {
|
|
|
|
+ let { uuid, session, username } = req.body;
|
|
|
|
+
|
|
|
|
+ if ([uuid, session, username].some(value => value === '' || value === null || value === undefined)) {
|
|
|
|
+ return res.json({
|
|
|
|
+ ...BaseStdResponse.MISSING_PARAMETER,
|
|
|
|
+ endpoint: 1513126
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!this.checkUsername(username))
|
|
|
|
+ return res.json({
|
|
|
|
+ ...BaseStdResponse.ERR,
|
|
|
|
+ msg: '用户名需在2到8位之间,且只能含有英文字母和汉字'
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ // 检查 session 是否有效
|
|
|
|
+ if (!await AccessControl.checkSession(uuid, session)) {
|
|
|
|
+ return res.json({
|
|
|
|
+ ...BaseStdResponse.ACCESS_DENIED,
|
|
|
|
+ endpoint: 48153145
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let sql = 'SELECT username FROM users WHERE username = ?';
|
|
|
|
+ let UserRows = await db.query(sql, [username]);
|
|
|
|
+ if (UserRows.length > 0)
|
|
|
|
+ return res.json({
|
|
|
|
+ ...BaseStdResponse.USER_ALREADY_EXISTS,
|
|
|
|
+ msg: '该用户名已被占用!'
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ sql = 'UPDATE users SET username = ? WHERE uuid = ?';
|
|
|
|
+ let result = await db.query(sql, [username, uuid]);
|
|
|
|
+
|
|
|
|
+ if (result && result.affectedRows > 0) {
|
|
|
|
+ sql = 'SELECT wxid, avatar, email FROM users WHERE uuid = ?';
|
|
|
|
+ let rows = await db.query(sql, [uuid]);
|
|
|
|
+ if(!rows || rows.length === 0)
|
|
|
|
+ return res.json({
|
|
|
|
+ ...BaseStdResponse.DATABASE_ERR
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ res.json({
|
|
|
|
+ ...BaseStdResponse.OK,
|
|
|
|
+ data: {
|
|
|
|
+ uuid,
|
|
|
|
+ username: username,
|
|
|
|
+ wxid: rows[0].wxid,
|
|
|
|
+ email: rows[0].email,
|
|
|
|
+ avatar: rows[0].avatar,
|
|
|
|
+ session
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '操作失败!' });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+module.exports.ChangeUsername = ChangeUsername;
|