修改用户名&多任务奖励

This commit is contained in:
chnxianyi
2025-09-17 13:49:34 +08:00
parent 03decff71d
commit a730dc9974
3 changed files with 58 additions and 6 deletions

View File

@@ -211,6 +211,48 @@ exports.EditEmail = async(req, res) => {
return res.status(200).send(result.deleteSecrets());
};
exports.EditUsername = async(req, res) => {
var userId = req.jwt.userId;
var username = req.body.username;
if(!userId || typeof userId !== "string")
return res.status(400).send({error: "Invalid parameters"});
if(!username || !Validator.validateUsername(username))
return res.status(400).send({error: "Invalid email"});
var user = await UserModel.getById(userId);
if(!user)
return res.status(404).send({error: "User not found: " + userId});
if(username == user.username)
return res.status(400).send({error: "Username unchanged"});
//Find username
var foundUserUsername = await UserModel.getByUsername(username);
if(foundUserUsername)
return res.status(403).send({error: "Username already exists"});
var prev_username = user.username;
var userData = {};
userData.username = username;
userData.validation_level = 0;
userData.email_confirm_key = UserTool.generateID(20);
//Update user
var result = await UserModel.update(user, userData);
if(!result)
return res.status(400).send({error: "Error updating user username: " + userId});
// Activity Log -------------
var activityData = {prev_username: prev_username, new_username: username };
var a = await Activity.LogActivity("edit_username", req.jwt.username, {activityData});
if (!a) return res.status(500).send({ error: "Failed to log activity!!" });
return res.status(200).send(result.deleteSecrets());
};
exports.EditPassword = async(req, res) => {
var userId = req.jwt.userId;

View File

@@ -51,6 +51,13 @@ exports.route = function (app) {
UsersController.EditEmail,
]);
//Body: username
app.post("/users/username/edit", app.auth_limiter, [
AuthTool.isValidJWT,
AuthTool.isPermissionLevel(USER),
UsersController.EditUsername,
]);
//Body: password_previous, password_new
app.post("/users/password/edit", app.auth_limiter, [
AuthTool.isValidJWT,