(req: MonkeyRequest)
| 321 | } |
| 322 | |
| 323 | export async function resetUser(req: MonkeyRequest): Promise<MonkeyResponse> { |
| 324 | const { uid } = req.ctx.decodedToken; |
| 325 | |
| 326 | const userInfo = await UserDAL.getPartialUser(uid, "reset user", [ |
| 327 | "banned", |
| 328 | "discordId", |
| 329 | "email", |
| 330 | "name", |
| 331 | ]); |
| 332 | if (userInfo.banned) { |
| 333 | throw new MonkeyError(403, "Banned users cannot reset their account"); |
| 334 | } |
| 335 | |
| 336 | const promises = [ |
| 337 | UserDAL.resetUser(uid), |
| 338 | deleteAllApeKeys(uid), |
| 339 | deleteAllPresets(uid), |
| 340 | deleteAllResults(uid), |
| 341 | deleteConfig(uid), |
| 342 | purgeUserFromDailyLeaderboards( |
| 343 | uid, |
| 344 | req.ctx.configuration.dailyLeaderboards, |
| 345 | ), |
| 346 | purgeUserFromXpLeaderboards( |
| 347 | uid, |
| 348 | req.ctx.configuration.leaderboards.weeklyXp, |
| 349 | ), |
| 350 | ]; |
| 351 | |
| 352 | if (userInfo.discordId !== undefined && userInfo.discordId !== "") { |
| 353 | promises.push(GeorgeQueue.unlinkDiscord(userInfo.discordId, uid)); |
| 354 | } |
| 355 | await Promise.all(promises); |
| 356 | void addImportantLog("user_reset", `${userInfo.email} ${userInfo.name}`, uid); |
| 357 | |
| 358 | return new MonkeyResponse("User reset", null); |
| 359 | } |
| 360 | |
| 361 | export async function updateName( |
| 362 | req: MonkeyRequest<undefined, UpdateUserNameRequest>, |
nothing calls this directly
no test coverage detected