[web] Generate team passwords
This commit is contained in:
parent
f8c81206d8
commit
1582e7a480
@ -1 +0,0 @@
|
||||
export const csr = false;
|
@ -27,7 +27,7 @@ export const load = (async ({ params }) => {
|
||||
'expected',
|
||||
'actual',
|
||||
problem.realOutput,
|
||||
submission.actualOutput
|
||||
submission.actualOutput!
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { db } from '$lib/server/prisma';
|
||||
import type { Actions, PageServerLoad } from './$types';
|
||||
import { genPassword } from './util';
|
||||
|
||||
export const load = (async () => {
|
||||
const teams = await db.team.findMany();
|
||||
@ -18,7 +19,7 @@ export const actions = {
|
||||
return { success: false };
|
||||
}
|
||||
try {
|
||||
await db.team.create({ data: { name: name.toString(), password: "thing" } });
|
||||
await db.team.create({ data: { name: name.toString(), password: genPassword() } });
|
||||
} catch {
|
||||
return { success: false };
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { enhance } from '$app/forms';
|
||||
import { genPassword } from '../util';
|
||||
import type { Actions, PageData } from './$types';
|
||||
|
||||
export let data: PageData;
|
||||
@ -10,6 +11,11 @@
|
||||
$: if (form && form.success) {
|
||||
changingPassword = false;
|
||||
}
|
||||
|
||||
function onGenPassword() {
|
||||
const passEntry = document.getElementById('pass_entry') as HTMLInputElement;
|
||||
passEntry.value = genPassword();
|
||||
}
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
@ -72,7 +78,7 @@
|
||||
{:else}
|
||||
<form method="POST" action="?/password" use:enhance>
|
||||
<h4>Change Password</h4>
|
||||
<input name="password" class="form-control" />
|
||||
<input id="pass_entry" name="password" class="form-control" />
|
||||
<div class="mt-2 row">
|
||||
<div class="text-end">
|
||||
<button
|
||||
@ -82,6 +88,9 @@
|
||||
type="button"
|
||||
class="btn btn-outline-secondary">Cancel</button
|
||||
>
|
||||
<button on:click={onGenPassword} type="button" class="btn btn-outline-primary"
|
||||
>Generate</button
|
||||
>
|
||||
<button type="submit" class="btn btn-success">Change</button>
|
||||
</div>
|
||||
</div>
|
||||
|
8
web/src/routes/admin/teams/util.ts
Normal file
8
web/src/routes/admin/teams/util.ts
Normal file
@ -0,0 +1,8 @@
|
||||
export function genPassword(): string {
|
||||
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
let password = '';
|
||||
for (let i = 0; i < 8; i++) {
|
||||
password += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
return password;
|
||||
}
|
Loading…
Reference in New Issue
Block a user