All checks were successful
Build and Push Image / docker-build-and-push (push) Successful in 2m28s
Co-authored-by: Shaun Campbell <shaun@campbellwireless.net> Reviewed-on: #39 Co-authored-by: AI Agent <ai-agent@campbellwireless.net> Co-committed-by: AI Agent <ai-agent@campbellwireless.net>
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { json } from '@sveltejs/kit';
|
|
import type { RequestHandler } from './$types';
|
|
import { requireAdmin } from '$lib/server/admin/auth.js';
|
|
import { createLocalUser, 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 POST: RequestHandler = async (event) => {
|
|
requireAdmin((await event.locals.auth())?.user);
|
|
const body = await event.request.json();
|
|
const { username, full_name, email, password } = body as {
|
|
username?: string;
|
|
full_name?: string;
|
|
email?: string | null;
|
|
password?: string;
|
|
};
|
|
if (!username?.trim() || !full_name?.trim() || !password?.trim()) {
|
|
return json({ error: 'username, full_name and password required' }, { status: 400 });
|
|
}
|
|
try {
|
|
const user = await createLocalUser({
|
|
username: username.trim(),
|
|
fullName: full_name.trim(),
|
|
email,
|
|
password
|
|
});
|
|
return json(user);
|
|
} catch (error) {
|
|
return json(
|
|
{ error: error instanceof Error ? error.message : 'Failed to create user' },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
};
|
|
|
|
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 });
|
|
};
|