diff --git a/functions/api/game-bans/[user]/revoke.ts b/functions/api/game-bans/[user]/revoke.ts new file mode 100644 index 0000000..cfc650c --- /dev/null +++ b/functions/api/game-bans/[user]/revoke.ts @@ -0,0 +1,41 @@ +import { insertLogs } from "../../../gcloud.js"; +import { getBanList, setBanList } from "../../../roblox-open-cloud.js"; + +export async function onRequestPost(context: RequestContext) { + const { ticket_link } = context.data.body; + + if ( + !ticket_link?.match( + /^https?:\/\/carcrushers\.modmail\.dev\/logs\/[a-z\d]{12}$/ + ) + ) + return new Response('{"error":"Invalid ticket link provided"}', { + headers: { + "content-type": "application/json", + }, + status: 400, + }); + + const user = context.params.user as string; + + if (isNaN(parseInt(user))) + return new Response('{"error":"Invalid user ID"}', { + headers: { + "content-type": "application/json", + }, + status: 400, + }); + + await insertLogs({ [user]: 3 }, ticket_link, context); + + const banList = (await getBanList(context)) as { + [k: string]: { BanType: number }; + }; + + delete banList[user]; + await setBanList(context, banList); + + return new Response(null, { + status: 204, + }); +}