bytedream 45f984e4da
All checks were successful
deploy / build-and-deploy (push) Successful in 21s
add delete to admin panel
2025-05-21 20:53:53 +02:00

56 lines
1.4 KiB
TypeScript

import { defineAction } from 'astro:actions';
import { db } from '@db/database.ts';
import { z } from 'astro:schema';
import { Session } from '@util/session.ts';
import { Permissions } from '@util/permissions.ts';
export const admin = {
addAdmin: defineAction({
input: z.object({
username: z.string(),
password: z.string(),
permissions: z.number()
}),
handler: async (input, context) => {
Session.actionSessionFromCookies(context.cookies, Permissions.Admin);
const { id } = await db.addAdmin(input);
return {
id: id
};
}
}),
editAdmin: defineAction({
input: z.object({
id: z.number(),
username: z.string(),
password: z.string().nullable(),
permissions: z.number()
}),
handler: async (input, context) => {
Session.actionSessionFromCookies(context.cookies, Permissions.Admin);
await db.editAdmin(input);
}
}),
deleteAdmin: defineAction({
input: z.object({
id: z.number()
}),
handler: async (input, context) => {
Session.actionSessionFromCookies(context.cookies, Permissions.Admin);
await db.deleteAdmin(input);
}
}),
admins: defineAction({
handler: async (_, context) => {
Session.actionSessionFromCookies(context.cookies, Permissions.Admin);
return {
admins: await db.getAdmins({})
};
}
})
};