diff --git a/frontend/src/routes/tutor/+layout.server.ts b/frontend/src/routes/tutor/+layout.server.ts index 742f936e9ed4f60fe8fe0aa7e1955c5d8d9cd00f..ac1f4a4c1241dfd45e0394325ff3ca2bc2a8abd7 100644 --- a/frontend/src/routes/tutor/+layout.server.ts +++ b/frontend/src/routes/tutor/+layout.server.ts @@ -8,8 +8,10 @@ export const load: ServerLoad = async ({ locals, url }) => { redirect(303, '/login'); } - const user = JSON.parse(locals.user); + // const user = JSON.parse(locals.user); + const user = typeof locals.user === 'string' ? JSON.parse(locals.user) : locals.user; + console.log('Parsed user: ', user); if (user == null || user == undefined || user.type > 1) { error(403, 'Forbidden'); } -}; +}; \ No newline at end of file diff --git a/frontend/src/routes/tutor/register/+page.svelte b/frontend/src/routes/tutor/register/+page.svelte index 82b3f07754538ad47776a9ec530f365e05a46d29..209bfa3fa2bee666a80bf3aa52f38b282a779b75 100644 --- a/frontend/src/routes/tutor/register/+page.svelte +++ b/frontend/src/routes/tutor/register/+page.svelte @@ -5,7 +5,7 @@ import { onMount } from 'svelte'; import Timeslots from '$lib/components/users/timeslots.svelte'; import User from '$lib/types/user'; - import { getUsersAPI, patchUserAPI, getUserContactsAPI } from '$lib/api/users'; + import { getUsersAPI, patchUserAPI, getUserContactsAPI, createUserAPI} from '$lib/api/users'; import { Icon, Envelope, Key, UserCircle, Calendar, QuestionMarkCircle } from 'svelte-hero-icons'; import Typingtest from '$lib/components/tests/typingtest.svelte'; import { formatToUTCDate } from '$lib/utils/date'; @@ -54,44 +54,57 @@ let timeslots = 0n; async function onRegister() { - if (nickname == '' || email == '' || password == '' || confirmPassword == '') { - message = $t('register.error.emptyFields'); - return; - } - if (password.length < 8) { - message = $t('register.error.passwordRules'); - return; - } - if (password != confirmPassword) { - message = $t('register.error.differentPasswords'); - return; - } - const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/; - if (!emailRegex.test(email)) { - message = $t('register.error.emailRules'); - return; - } - message = ''; - - const registerRes = await registerAPI(email, password, nickname, true); - - if (registerRes !== 'OK') { - message = registerRes; + // Basic validation + if (nickname == '' || email == '' || password == '' || confirmPassword == '') { + message = $t('register.error.emptyFields'); + return; + } + if (password.length < 8) { + message = $t('register.error.passwordRules'); + return; + } + if (password != confirmPassword) { + message = $t('register.error.differentPasswords'); + return; + } + const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/; + if (!emailRegex.test(email)) { + message = $t('register.error.emailRules'); + return; + } + message = ''; + + try { + const response = await fetch('http://127.0.0.1:8000/tmp-api/v1/auth/register', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + body: JSON.stringify({ + email, + password, + nickname, + is_tutor: true + }) + }); + + if (response.status === 201) { + const userId = await response.text(); + console.log('User created successfully with ID:', userId); + message = $t('register.success'); return; - } + } else { + const errorData = await response.json(); + console.error('Registration failed:', errorData); + message = errorData.detail || $t('register.error.generic'); + } + } catch (error) { + console.error('Error during registration:', error); + message = $t('register.error.generic'); + } +} - const loginRes = await loginAPI(email, password); - - if (loginRes !== 'OK') { - toastAlert('Failed to login: ' + loginRes); - document.location.href = '/login'; - return; - } - - document.location.href = '/tutor/register'; - - message = 'OK'; - } async function onData() { const user_id = user.id;