Skip to content
Extraits de code Groupes Projets
Valider 17da79e2 rédigé par Brieuc Dubois's avatar Brieuc Dubois
Parcourir les fichiers

Fix #178 Move role to URL

parent ba81eb2a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -5,7 +5,7 @@ import { validateEmail, validatePassword, validateUsername } from '$lib/utils/se ...@@ -5,7 +5,7 @@ import { validateEmail, validatePassword, validateUsername } from '$lib/utils/se
import { redirect, type Actions } from '@sveltejs/kit'; import { redirect, type Actions } from '@sveltejs/kit';
export const actions: Actions = { export const actions: Actions = {
register: async ({ request, fetch, params }) => { register: async ({ request, fetch, params, url }) => {
const formData = await request.formData(); const formData = await request.formData();
const study_idStr = params.studyId; const study_idStr = params.studyId;
if (!study_idStr) return { message: 'Invalid request' }; if (!study_idStr) return { message: 'Invalid request' };
...@@ -55,6 +55,10 @@ export const actions: Actions = { ...@@ -55,6 +55,10 @@ export const actions: Actions = {
if (response.status === 422) return { message: 'Invalid request' }; if (response.status === 422) return { message: 'Invalid request' };
if (!response.ok) return { message: 'Unknown error occurred' }; if (!response.ok) return { message: 'Unknown error occurred' };
if (url.searchParams.has('role')) {
return redirect(303, `/register/${study_id}?role=${url.searchParams.get('role')}`);
}
return redirect(303, `/register/${study_id}`); return redirect(303, `/register/${study_id}`);
}, },
data: async ({ request, fetch, locals }) => { data: async ({ request, fetch, locals }) => {
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
import { displayDate } from '$lib/utils/date'; import { displayDate } from '$lib/utils/date';
import { t } from '$lib/services/i18n'; import { t } from '$lib/services/i18n';
import { Icon, Envelope, Key, UserCircle } from 'svelte-hero-icons'; import { Icon, Envelope, Key, UserCircle } from 'svelte-hero-icons';
import { browser } from '$app/environment';
import type { PageData } from './$types'; import type { PageData } from './$types';
import Consent from '$lib/components/surveys/consent.svelte'; import Consent from '$lib/components/surveys/consent.svelte';
import type Study from '$lib/types/study'; import type Study from '$lib/types/study';
...@@ -20,7 +19,6 @@ ...@@ -20,7 +19,6 @@
let tutors = $state(data.tutors || []); let tutors = $state(data.tutors || []);
let isLoading = $state(false); let isLoading = $state(false);
let selectedTutorEmail = $state(''); let selectedTutorEmail = $state('');
let is_tutor = $state(false);
const MAX_BIO_LENGTH = 100; const MAX_BIO_LENGTH = 100;
let remainingCharacters = $state(MAX_BIO_LENGTH); let remainingCharacters = $state(MAX_BIO_LENGTH);
let bio = $state(''); let bio = $state('');
...@@ -70,13 +68,6 @@ ...@@ -70,13 +68,6 @@
})() })()
); );
let study_id: number | null = (() => {
if (!browser) return null;
let study_id_str = new URLSearchParams(window.location.search).get('study');
if (!study_id_str) return null;
return parseInt(study_id_str) || null;
})();
async function handleTutorSelection(tutor: any) { async function handleTutorSelection(tutor: any) {
selectedTutorEmail = tutor.email; selectedTutorEmail = tutor.email;
selectedTutor = tutor; selectedTutor = tutor;
...@@ -242,7 +233,7 @@ ...@@ -242,7 +233,7 @@
<a <a
class="button mt-8" class="button mt-8"
class:btn-disabled={!selectedStudy} class:btn-disabled={!selectedStudy}
href="/register/{selectedStudy?.id}" href="/register/{selectedStudy?.id}?role={data.role}"
data-sveltekit-reload data-sveltekit-reload
> >
{$t('button.continue')} {$t('button.continue')}
...@@ -327,15 +318,9 @@ ...@@ -327,15 +318,9 @@
/> />
</div> </div>
</label> </label>
<div class="form-control"> <select hidden id="role" name="role">
<label for="role" class="label"> <option value={data.role === 'tutor' ? 1 : 2}></option>
<span class="label-text">{$t('register.role')}</span> </select>
</label>
<select class="select select-bordered" id="role" name="role" bind:value={is_tutor}>
<option value="2">{$t('register.roles.learner')}</option>
<option value="1">{$t('register.roles.tutor')}</option>
</select>
</div>
<div class="form-control"> <div class="form-control">
<button class="button mt-2">{$t('register.signup')}</button> <button class="button mt-2">{$t('register.signup')}</button>
</div> </div>
......
...@@ -3,7 +3,7 @@ import { getUsersAPI } from '$lib/api/users'; ...@@ -3,7 +3,7 @@ import { getUsersAPI } from '$lib/api/users';
import Study from '$lib/types/study'; import Study from '$lib/types/study';
import type { Load } from '@sveltejs/kit'; import type { Load } from '@sveltejs/kit';
export const load: Load = async ({ parent, fetch, params }) => { export const load: Load = async ({ parent, fetch, params, url }) => {
const { user } = await parent(); const { user } = await parent();
console.log(user); console.log(user);
...@@ -26,10 +26,19 @@ export const load: Load = async ({ parent, fetch, params }) => { ...@@ -26,10 +26,19 @@ export const load: Load = async ({ parent, fetch, params }) => {
const users = await getUsersAPI(fetch); const users = await getUsersAPI(fetch);
const tutors = users.filter((user) => user.type === 1); const tutors = users.filter((user) => user.type === 1);
let role = 'learner';
if (url.searchParams.has('role')) {
const roleParam = url.searchParams.get('role');
if (roleParam && roleParam === 'tutor') {
role = 'tutor';
}
}
return { return {
studyError: !study, studyError: !study,
study, study,
studies, studies,
tutors tutors,
role
}; };
}; };
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter