import { error, fail, redirect } from '@sveltejs/kit'; import { env } from '$env/dynamic/private'; import { createApiClient } from '$lib/api.server'; import { parseBackendError, getErrorMessage } from '$lib/errors'; export async function load({ fetch, locals }: { fetch: typeof globalThis.fetch; locals: App.Locals; }) { const canWrite = locals.user?.groups?.some((g: { permissions: string[] }) => g.permissions.includes('WRITE_ALL') ) ?? false; if (!canWrite) throw error(403, 'Forbidden'); const api = createApiClient(fetch); const personsResult = await api.GET('/api/persons'); if (!personsResult.response.ok) { return { persons: [] }; } return { persons: personsResult.data }; } export const actions = { default: async ({ request, fetch }) => { const baseUrl = env.API_INTERNAL_URL || 'http://localhost:8080'; const formData = await request.formData(); const res = await fetch(`${baseUrl}/api/documents`, { method: 'POST', body: formData }); if (!res.ok) { const backendError = await parseBackendError(res); return fail(res.status, { error: getErrorMessage(backendError?.code) }); } const created = await res.json(); throw redirect(303, `/documents/${created.id}`); } };