use zod for register verification
This commit is contained in:
@ -4,6 +4,7 @@
|
||||
import { createEventDispatcher, onMount } from 'svelte';
|
||||
import { env } from '$env/dynamic/public';
|
||||
import { rulesShort } from '$lib/rules';
|
||||
import { RegisterSchema } from './schema';
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
@ -40,21 +41,18 @@
|
||||
async function sendRegister() {
|
||||
// eslint-disable-next-line no-async-promise-executor
|
||||
registerRequest = new Promise<void>(async (resolve, reject) => {
|
||||
if (
|
||||
(birthdayInput.valueAsDate || new Date()) >
|
||||
new Date(Date.now() - 1000 * 60 * 60 * 24 * 365 * 6)
|
||||
) {
|
||||
reject(
|
||||
Error(
|
||||
'Bitte gib Deinen vollständigen Geburtstag und die korrekte Jahreszahl an. Du musst mindestens 6 Jahre alt sein.\n'
|
||||
)
|
||||
);
|
||||
const parseResult = RegisterSchema.safeParse(
|
||||
Object.fromEntries(new FormData(document.forms[0]))
|
||||
);
|
||||
|
||||
if (!parseResult.success) {
|
||||
reject(Error(parseResult.error.issues.map((i) => i.message).join('\n\n')));
|
||||
return;
|
||||
}
|
||||
|
||||
const response = await fetch(`${env.PUBLIC_BASE_PATH}/register`, {
|
||||
method: 'POST',
|
||||
body: new FormData(document.forms[0])
|
||||
body: JSON.stringify(Object.fromEntries(new FormData(document.forms[0])))
|
||||
});
|
||||
if (response.ok) {
|
||||
dispatch('submit', {
|
||||
@ -80,7 +78,7 @@
|
||||
let rulesAccepted = false;
|
||||
let rulesModal: HTMLDialogElement;
|
||||
let rulesModalSecondsOpened = 0;
|
||||
let rulesModalTimer: number | null = null;
|
||||
let rulesModalTimer: number | NodeJS.Timeout | undefined = undefined;
|
||||
|
||||
let inputsInvalidMessage: string | null = 'Bitte fülle alle erforderlichen Felder aus';
|
||||
let registerRequest: Promise<void> | null = null;
|
||||
@ -248,7 +246,7 @@
|
||||
class="modal"
|
||||
on:close={() => {
|
||||
clearInterval(rulesModalTimer);
|
||||
rulesModalTimer = null;
|
||||
rulesModalTimer = undefined;
|
||||
}}
|
||||
bind:this={rulesModal}
|
||||
>
|
||||
|
Reference in New Issue
Block a user