Skip to content
Permalink
75402b3315
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
84 lines (68 sloc) 2.27 KB
import { jsonError } from "../../common.js";
import precheck from "./precheck.js";
export async function onRequestPost(context: RequestContext) {
const authHeader = context.request.headers.get("authorization");
if (authHeader !== `Bearer ${context.env.ROBLOX_APPEALS_TOKEN}`)
return jsonError("Unauthorized", 401);
const { id, reasonForUnban, username, whatHappened } = context.data.body;
if (
typeof id !== "number" ||
typeof reasonForUnban !== "string" ||
typeof username !== "string" ||
typeof whatHappened !== "string"
)
return jsonError("Invalid data", 400);
if (!reasonForUnban.length || !whatHappened.length)
return jsonError("Missing required fields", 400);
if (reasonForUnban.length > 5000 || whatHappened.length > 5000)
return jsonError(
"The maximum length of each text field is 5000 characters",
400,
);
if (reasonForUnban.length < 100)
return jsonError(
"Your explanation of why you should be unbanned must be longer",
400,
);
if (whatHappened.length < 50)
return jsonError("Your explanation of your ban must be longer", 400);
const precheckData = await precheck(context, id);
if (precheckData.error)
return jsonError("Unable to check your eligibility, try again later", 500);
if (!precheckData.can_appeal)
return jsonError(precheckData.reason as string, 400);
const appealId = `${id}${context.request.headers
.get("cf-ray")
?.split("-")[0]}${Date.now()}`;
await context.env.DATA.put(
`gameappeal_${appealId}`,
JSON.stringify({
id: appealId,
reasonForUnban,
roblox_id: id,
roblox_username: username,
whatHappened,
}),
);
await context.env.D1.prepare(
"INSERT INTO game_appeals (created_at, id, open, user) VALUES (?, ?, ?, ?);",
).bind(Date.now(), appealId, 1, id);
await fetch(context.env.REPORTS_WEBHOOK, {
body: JSON.stringify({
embeds: [
{
color: 3756250,
description: `${username} has pleaded for forgiveness! Head to https://carcrushers.cc/mod-queue?id=${appealId}&type=gma`,
title: "Appeal Submitted",
},
],
}),
headers: {
"content-type": "application/json",
},
method: "POST",
});
return new Response(null, {
status: 204,
});
}