feat(admission): add group VPN exceptions
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
export interface AdmissionMessages {
|
||||
registrationMessage: string;
|
||||
groupAccessDeniedMessage: string;
|
||||
vpnDeniedMessage: string;
|
||||
}
|
||||
|
||||
export const DEFAULT_ADMISSION_MESSAGES: AdmissionMessages = {
|
||||
registrationMessage: "Please register your Minecraft account before joining.",
|
||||
groupAccessDeniedMessage: "Your account group does not currently have server access. Contact a host if you believe this is a mistake.",
|
||||
vpnDeniedMessage: "VPN, proxy, and Tor connections are not allowed. Contact a host to request an exception.",
|
||||
} as const;
|
||||
|
||||
export function admissionDenialMessage(
|
||||
reason: "not_registered" | "group_access_disabled" | "anonymized_network_disallowed",
|
||||
messages: AdmissionMessages,
|
||||
) {
|
||||
if (reason === "not_registered") return messages.registrationMessage;
|
||||
if (reason === "group_access_disabled") return messages.groupAccessDeniedMessage;
|
||||
return messages.vpnDeniedMessage;
|
||||
}
|
||||
|
||||
const CONTROL_CHARACTERS = /[\u0000-\u001f\u007f]/;
|
||||
|
||||
function messageValue(formData: FormData, name: string) {
|
||||
const value = String(formData.get(name) ?? "").trim();
|
||||
return value.length >= 10 && value.length <= 500 && !CONTROL_CHARACTERS.test(value)
|
||||
? value
|
||||
: null;
|
||||
}
|
||||
|
||||
export function parseAdmissionMessages(formData: FormData) {
|
||||
const registrationMessage = messageValue(formData, "registrationMessage");
|
||||
const groupAccessDeniedMessage = messageValue(formData, "groupAccessDeniedMessage");
|
||||
const vpnDeniedMessage = messageValue(formData, "vpnDeniedMessage");
|
||||
if (!registrationMessage || !groupAccessDeniedMessage || !vpnDeniedMessage) return null;
|
||||
return { registrationMessage, groupAccessDeniedMessage, vpnDeniedMessage };
|
||||
}
|
||||
Reference in New Issue
Block a user