diff --git a/web/prisma/schema.prisma b/web/prisma/schema.prisma index 23c8013..3a91c05 100644 --- a/web/prisma/schema.prisma +++ b/web/prisma/schema.prisma @@ -56,6 +56,7 @@ model Team { name String @unique Submission Submission[] contests Contest[] @relation("TeamContestRelation") + password String } model Contest { diff --git a/web/src/routes/admin/teams/+page.svelte b/web/src/routes/admin/teams/+page.svelte index 2f64e8d..736a78d 100644 --- a/web/src/routes/admin/teams/+page.svelte +++ b/web/src/routes/admin/teams/+page.svelte @@ -76,7 +76,7 @@
{#each data.teams as team} -
+
{team.name} @@ -92,6 +92,6 @@ {/if}
-
+ {/each}
diff --git a/web/src/routes/admin/teams/[teamId]/+page.server.ts b/web/src/routes/admin/teams/[teamId]/+page.server.ts new file mode 100644 index 0000000..c4e1267 --- /dev/null +++ b/web/src/routes/admin/teams/[teamId]/+page.server.ts @@ -0,0 +1,38 @@ +import { db } from '$lib/server/prisma'; +import { error } from 'console'; +import type { Actions, PageServerLoad } from './$types'; +import { redirect } from '@sveltejs/kit'; + +export const load = (async ({ params }) => { + const teamId = parseInt(params.teamId); + if (isNaN(teamId)) { + throw error(400, 'Invalid request'); + } + const team = await db.team.findUnique({ + where: { id: teamId }, + select: { id: true, name: true, password: true } + }); + if (!team) { + throw redirect(302, '/admin/teams'); + } + return { team: team }; +}) satisfies PageServerLoad; + +export const actions = { + password: async ({ request, params }) => { + const data = await request.formData(); + const newPass = data.get('password'); + if (!newPass) { + return { success: false }; + } + try { + await db.team.update({ + where: { id: parseInt(params.teamId) }, + data: { password: newPass.toString() } + }); + } catch { + return { success: false }; + } + return { success: true }; + } +} satisfies Actions; diff --git a/web/src/routes/admin/teams/[teamId]/+page.svelte b/web/src/routes/admin/teams/[teamId]/+page.svelte new file mode 100644 index 0000000..f4e5ebf --- /dev/null +++ b/web/src/routes/admin/teams/[teamId]/+page.svelte @@ -0,0 +1,69 @@ + + + + Team + + +

{data.team.name}

+ +All Teams + + + + + + + + + + + + + + + + +
NameIdPassword
{data.team.name}{data.team.id}{data.team.password}
+ +{#if form && !form.success} +
Invalid entry
+{/if} + +{#if !changingPassword} + +{:else} +
+

Change Password

+ +
+
+ + +
+
+
+{/if}