Fixes
ci / docker_image (push) Successful in 2m28s
ci / deploy (push) Successful in 24s

This commit is contained in:
2025-06-19 17:14:18 -05:00
parent 8f41c04ca1
commit cbe002f4c4
17 changed files with 1052 additions and 109 deletions
@@ -0,0 +1,47 @@
import { type Actions, error, fail, redirect } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';
import { editApplication, getEditApplicationPageData } from '$lib/db/index.server';
import { getUserId, 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, params, 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`);
}
};