diff --git a/frontend/src/lib/api/users.ts b/frontend/src/lib/api/users.ts index f90f6d658e9e336eabea154f1f5d000461245faf..ebe0a0a1479183e66cdb2e5b9efb7e76f6afdb2e 100644 --- a/frontend/src/lib/api/users.ts +++ b/frontend/src/lib/api/users.ts @@ -15,37 +15,39 @@ export async function getUserAPI(fetch: fetchType, user_id: number): Promise<any } export async function loginAPI( - fetch: fetchType, - email: string, - password: string + fetch: fetchType, + email: string, + password: string ): Promise<{ accessToken: string | null; refreshToken: string | null }> { - const response = await fetch(`/tmp-api/v1/auth/login`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - credentials: 'include', - body: JSON.stringify({ email, password }), - }); - - if (!response.ok) { - console.error(`Login failed:`, await response.json()); - return { accessToken: null, refreshToken: null }; - } - - const cookies = document.cookie.split('; ').reduce((acc, cookie) => { - const [key, value] = cookie.split('='); - acc[key] = decodeURIComponent(value); - return acc; - }, {} as Record<string, string>); - - return { - accessToken: cookies['access_token'] || null, - refreshToken: cookies['refresh_token'] || null, - }; -} + const response = await fetch(`/tmp-api/v1/auth/login`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json' + }, + credentials: 'include', + body: JSON.stringify({ email, password }) + }); + if (!response.ok) { + console.error(`Login failed:`, await response.json()); + return { accessToken: null, refreshToken: null }; + } + + const cookies = document.cookie.split('; ').reduce( + (acc, cookie) => { + const [key, value] = cookie.split('='); + acc[key] = decodeURIComponent(value); + return acc; + }, + {} as Record<string, string> + ); + + return { + accessToken: cookies['access_token'] || null, + refreshToken: cookies['refresh_token'] || null + }; +} export async function createUserContactAPI( fetch: fetchType, diff --git a/frontend/src/routes/tutor/register/+page.svelte b/frontend/src/routes/tutor/register/+page.svelte index 4061779692064ad118d956f9343c36e8dff3f8a1..9353db36e43715926ac44e8f635eca95dfd0819c 100644 --- a/frontend/src/routes/tutor/register/+page.svelte +++ b/frontend/src/routes/tutor/register/+page.svelte @@ -5,7 +5,13 @@ import { onMount } from 'svelte'; import Timeslots from '$lib/components/users/timeslots.svelte'; import User from '$lib/types/user'; - import { getUsersAPI, patchUserAPI, getUserContactsAPI, getUserAPI, loginAPI } from '$lib/api/users'; + import { + getUsersAPI, + patchUserAPI, + getUserContactsAPI, + getUserAPI, + loginAPI + } 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'; @@ -56,69 +62,66 @@ 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 = ''; - - 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); - console.log('response:', response); - const result = await loginAPI(fetch, email, password); - console.log('result:', result); - - - user = await getUserAPI(fetch, parseInt(userId)); - if (user) { - console.log('User details fetched successfully:', user); - message = $t('register.success'); - current_step++; // Move to the next step - } else { - console.error('Failed to fetch user details'); - toastAlert('Failed to fetch user details. Please try again.'); - } - } 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'); - } -} - - + 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); + console.log('response:', response); + const result = await loginAPI(fetch, email, password); + console.log('result:', result); + + user = await getUserAPI(fetch, parseInt(userId)); + if (user) { + console.log('User details fetched successfully:', user); + message = $t('register.success'); + current_step++; // Move to the next step + } else { + console.error('Failed to fetch user details'); + toastAlert('Failed to fetch user details. Please try again.'); + } + } 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'); + } + } async function onData() { console.log('onData: ', user);