Files
trips/src/routes/(protected)/admin/api/users/+server.ts
Shaun Campbell a67b1db90a
Some checks failed
PR Checks / lint-test-and-docker-build (pull_request) Failing after 1m3s
auth) addressing issues with detecting admins
2026-02-22 00:04:50 -05:00

34 lines
1.1 KiB
TypeScript

import { json } from '@sveltejs/kit';
import type { RequestHandler } from './$types';
import { requireAdmin } from '$lib/server/admin/auth.js';
import { deleteUser, listUsers, updateUser } from '$lib/server/users.js';
export const GET: RequestHandler = async (event) => {
requireAdmin((await event.locals.auth())?.user);
return json(listUsers());
};
export const PATCH: RequestHandler = async (event) => {
requireAdmin((await event.locals.auth())?.user);
const body = await event.request.json();
const { id, username, full_name, email } = body as {
id?: string;
username?: string;
full_name?: string;
email?: string | null;
};
if (!id?.trim() || !username?.trim() || !full_name?.trim()) {
return json({ error: 'id, username and full_name required' }, { status: 400 });
}
updateUser({ id: id.trim(), username, fullName: full_name, email });
return json({ ok: true });
};
export const DELETE: RequestHandler = async (event) => {
requireAdmin((await event.locals.auth())?.user);
const id = event.url.searchParams.get('id')?.trim();
if (!id) return json({ error: 'id required' }, { status: 400 });
deleteUser(id);
return json({ ok: true });
};