56 lines
1.1 KiB
TypeScript
56 lines
1.1 KiB
TypeScript
export async function onBeforeRender(pageContext: PageContext) {
|
|
const { current_user: currentUser } = pageContext;
|
|
|
|
if (!currentUser)
|
|
return {
|
|
pageContext: {
|
|
logged_in: false,
|
|
},
|
|
status: 401,
|
|
};
|
|
|
|
const typePermissions = {
|
|
appeal: [1 << 0, 1 << 1],
|
|
gma: [1 << 5],
|
|
report: [1 << 5],
|
|
};
|
|
|
|
const typeNames: { [k: string]: string } = {
|
|
appeal: "Discord Appeals",
|
|
gma: "Game Appeals",
|
|
report: "Game Reports",
|
|
};
|
|
|
|
const { searchParams } = new URL(
|
|
pageContext.urlOriginal,
|
|
"http://localhost:8788"
|
|
);
|
|
|
|
const allowedTypes = [];
|
|
|
|
for (const [type, ints] of Object.entries(typePermissions)) {
|
|
if (ints.find((i) => currentUser.permissions & i))
|
|
allowedTypes.push({ name: typeNames[type], value: type });
|
|
}
|
|
|
|
if (!allowedTypes.length)
|
|
return {
|
|
pageContext: {
|
|
entry_types: [],
|
|
},
|
|
status: 403,
|
|
};
|
|
|
|
const includeClosed = searchParams.get("includeClosed");
|
|
const type = searchParams.get("type");
|
|
const sort = searchParams.get("sort") ?? "asc";
|
|
|
|
return {
|
|
pageContext: {
|
|
pageProps: {
|
|
entry_types: allowedTypes,
|
|
},
|
|
},
|
|
};
|
|
}
|