Files
FBLA25/src/routes/account/editapplication/+page.server.ts
T
jenkins 8e1e90761b
ci / docker_image (push) Successful in 2m25s
ci / deploy (push) Successful in 24s
constrast + bug fixes
2025-06-21 22:42:06 -05:00

48 lines
1.6 KiB
TypeScript

import { type Actions, error, fail, redirect } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';
import { editApplication, getEditApplicationPageData } from '$lib/db/index.server';
import { getUserPerms } from '$lib/index.server';
import { PERMISSIONS } from '$lib/consts';
import type { Application } from '$lib/types';
export const load: PageServerLoad = async ({ url, cookies }) => {
if (!url.searchParams.has('id')) {
error(400, 'Missing required parameter: id');
}
// Permission check (apply perm)
const id = parseInt(url.searchParams.get('id')!);
const perms = getUserPerms(cookies);
if (perms >= 0 && (perms & PERMISSIONS.APPLY_FOR_JOBS) > 0) {
return await getEditApplicationPageData(id);
}
error(403, 'Unauthorized');
};
export const actions: Actions = {
// Application submission
submit: async ({ request, cookies, url }) => {
// Permission check (apply perm)
if (!((getUserPerms(cookies) & PERMISSIONS.APPLY_FOR_JOBS) > 0)) {
return fail(403, { errorMessage: 'Unauthorized' });
}
const data = await request.formData();
const candidateStatement = data.get('candidateStatement')?.toString().trim();
// Statement data validation
if (!candidateStatement || candidateStatement === '') {
return fail(400, { errorMessage: 'Candidate statement is required' });
}
// Push to DB and redirect
if (!url.searchParams.has('id')) {
error(400, 'Missing required parameter: id');
}
const id: number = parseInt(url.searchParams.get('id')!);
await editApplication(<Application>{ id, candidateStatement });
redirect(301, `/postings`);
}
};