mirror of
https://github.com/Paris-est-Ludique/ForceOrange.git
synced 2025-09-11 14:36:29 +02:00
🐛 fixing profile data and some QA issues
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
import { object, string, boolean, type InferType } from 'yup'
|
||||
import type { Database } from '@pel/supabase/types'
|
||||
import type { FormSubmitEvent, FormErrorEvent } from '#ui/types'
|
||||
import { lowerString } from '~/utils/commons';
|
||||
|
||||
definePageMeta({
|
||||
name: 'Join',
|
||||
@@ -16,8 +17,8 @@ const toast = useToast()
|
||||
const { auth } = useSupabaseClient<Database>()
|
||||
|
||||
const schema = object({
|
||||
email: string().lowercase().trim().email('Il semble que l\'email ne soit pas bon').required('Champ obligatoire'),
|
||||
password: string().min(6, 'Il faudrait un minimum de 6 charactères').test({
|
||||
email: string().lowercase().trim().max(500, 'hmmmm c\'est un peu beaucoup là non ?').email('Il semble que l\'email ne soit pas bon').required('Champ obligatoire'),
|
||||
password: string().min(6, 'Il faudrait un minimum de 6 charactères').max(500, 'hmmmm c\'est un peu beaucoup là non ?').test({
|
||||
name: 'password',
|
||||
message: 'Le mot de passe n\'est pas assez fort ~~',
|
||||
test: (value) => {
|
||||
@@ -25,9 +26,10 @@ const schema = object({
|
||||
return testPassword(value).score >= 3
|
||||
},
|
||||
}).required('Champ obligatoire'),
|
||||
firstname: string().lowercase().trim().required('Champ obligatoire'),
|
||||
lastname: string().lowercase().trim().required('Champ obligatoire'),
|
||||
firstname: string().trim().max(500, 'hmmmm c\'est un peu beaucoup là non ?').required('Champ obligatoire'),
|
||||
lastname: string().trim().max(500, 'hmmmm c\'est un peu beaucoup là non ?').required('Champ obligatoire'),
|
||||
isAdult: boolean().oneOf([true], 'Pour pouvoir t\'inscrire tu dois être majeur (ou bientôt)'),
|
||||
lastEdition: boolean(),
|
||||
})
|
||||
|
||||
type Schema = InferType<typeof schema>
|
||||
@@ -40,6 +42,7 @@ const state = reactive({
|
||||
firstname: undefined,
|
||||
lastname: undefined,
|
||||
isAdult: false,
|
||||
lastEdition: false,
|
||||
})
|
||||
|
||||
async function onSubmit(event: FormSubmitEvent<Schema>) {
|
||||
@@ -48,13 +51,14 @@ async function onSubmit(event: FormSubmitEvent<Schema>) {
|
||||
// Do something with event.data
|
||||
const formSubmit = event.data
|
||||
const { data, error } = await auth.signUp({
|
||||
email: formSubmit.email,
|
||||
email: lowerString(formSubmit.email),
|
||||
password: formSubmit.password,
|
||||
options: {
|
||||
data: {
|
||||
firstname: formSubmit.firstname,
|
||||
lastname: formSubmit.lastname,
|
||||
firstname: lowerString(formSubmit.firstname),
|
||||
lastname: lowerString(formSubmit.lastname),
|
||||
is_adult: formSubmit.isAdult,
|
||||
last_edition: formSubmit.lastEdition,
|
||||
},
|
||||
emailRedirectTo: `${config.public.baseUrl}/join/valid`,
|
||||
},
|
||||
@@ -96,7 +100,7 @@ async function onError(event: FormErrorEvent) {
|
||||
formulaire ci-dessous:
|
||||
</p>
|
||||
|
||||
<UForm ref="form" :schema="schema" :state="state" @submit="onSubmit" @error="onError">
|
||||
<UForm ref="form" :schema="schema" :state="state" @submit="onSubmit" @error="onError" class="my-8">
|
||||
<UFormGroup :ui="formGroupStyle.ui" label="Adresse courriel" name="email">
|
||||
<template #default="{ error }">
|
||||
<UInput :ui="inputStyle.ui" v-bind="inputStyle.attrs" placeholder="Adresse courriel" v-model="state.email"
|
||||
@@ -121,11 +125,14 @@ async function onError(event: FormErrorEvent) {
|
||||
|
||||
<div class="flex md:flex-row flex-col gap-4 mb-4">
|
||||
<div class="flex-1">
|
||||
<UFormGroup :ui="formGroupStyle.ui" label="Prénom" name="firstname">
|
||||
<UFormGroup :ui="formGroupStyle.ui" label="Prénom (le vrai !)" name="firstname">
|
||||
<template #default="{ error }">
|
||||
<UInput :ui="inputStyle.ui" v-bind="inputStyle.attrs" placeholder="Roger" v-model="state.firstname"
|
||||
:trailing-icon="error ? 'i-heroicons-exclamation-triangle-20-solid' : undefined" />
|
||||
</template>
|
||||
<template #help>
|
||||
Attention pas de pseudos/surnom ici ! (sinon nous ne pouvons pas valider ton profil)
|
||||
</template>
|
||||
</UFormGroup>
|
||||
</div>
|
||||
|
||||
@@ -139,11 +146,19 @@ async function onError(event: FormErrorEvent) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<UFormGroup name="lastEdition" class="my-8">
|
||||
<UCheckbox label="J'ai participer à la précédente édition ?" v-model="state.lastEdition" />
|
||||
<template #help>
|
||||
Dis nous si tu étais déjà bénévole à la dernière édition.<br>
|
||||
Surtout ne mens pas, on vous connait ! (et on a les photos)
|
||||
</template>
|
||||
</UFormGroup>
|
||||
|
||||
<UFormGroup name="isAdult" class="mb-4">
|
||||
<UCheckbox label="Je serais majeur avant la prochaine édition." v-model="state.isAdult" />
|
||||
</UFormGroup>
|
||||
|
||||
<UButton type="submit" :loading="isJoining" :disabled="isJoining">S'inscrire</UButton>
|
||||
<UButton color="orange" type="submit" :loading="isJoining" :disabled="isJoining">S'inscrire</UButton>
|
||||
</UForm>
|
||||
</UCard>
|
||||
</template>
|
@@ -17,13 +17,19 @@ const isEmailModalOpen = ref(false)
|
||||
<div class="grid gap-8 md:grid-cols-2">
|
||||
<UCard class="md:col-span-2">
|
||||
<h1 class="text-2xl">{{ displayName }}</h1>
|
||||
|
||||
<p v-if="!profile?.is_validated">
|
||||
Ton compte sera bientôt validé pour les organisateurs du festival Paris Est Ludique.<br>
|
||||
</p>
|
||||
|
||||
<p v-else>Ton compte a été validé ! Prêt pour Paris Est Ludique 2025 ?</p>
|
||||
</UCard>
|
||||
|
||||
<UCard>
|
||||
<h1 class="text-2xl uppercase mb-4">Authentification</h1>
|
||||
<p>Gérer mes manières de me connecter au site de Force Orange.</p>
|
||||
|
||||
<p class="text-orange-500 mt-4">{{ profile.mail }}</p>
|
||||
<p class="text-orange-500 mt-4">{{ profile?.email }}</p>
|
||||
|
||||
<div class="my-4 flex flex-col gap-4">
|
||||
<UButton variant="soft" icon="i-mdi-email" @click="isEmailModalOpen = true">Modifier mon adresse de couriel
|
||||
|
@@ -2,6 +2,7 @@
|
||||
import { object, string, type InferType } from 'yup'
|
||||
import type { Database } from '@pel/supabase/types'
|
||||
import type { FormSubmitEvent } from '#ui/types'
|
||||
import { lowerString } from '~/utils/commons';
|
||||
|
||||
definePageMeta({
|
||||
name: 'SigninForgot',
|
||||
@@ -31,7 +32,7 @@ async function onSend(event: FormSubmitEvent<Schema>) {
|
||||
loading.value = true
|
||||
const formSubmit = event.data
|
||||
|
||||
const { data, error } = await auth.resetPasswordForEmail(formSubmit.email, {
|
||||
const { data, error } = await auth.resetPasswordForEmail(lowerString(formSubmit.email), {
|
||||
redirectTo: `${config.public.baseUrl}/profile/auth/reset`,
|
||||
})
|
||||
|
||||
@@ -59,7 +60,7 @@ async function onSend(event: FormSubmitEvent<Schema>) {
|
||||
|
||||
<template>
|
||||
<UCard v-if="sended" class="container mx-auto max-w-screen-md">
|
||||
<h1 class="text-2xl uppercase mb-8">C’est partit</h1>
|
||||
<h1 class="text-2xl uppercase mb-8">C’est parti</h1>
|
||||
<p>
|
||||
Si nous avons connaissance de cette adresse, vous devriez recevoir un courriel contenant les instructions pour
|
||||
récupérer votre compte Force Orange.
|
||||
|
@@ -17,7 +17,7 @@ const { inputStyle, formGroupStyle } = useFoStyle()
|
||||
|
||||
const schema = object({
|
||||
email: string().lowercase().trim().email('Invalid email').required('Required'),
|
||||
password: string().lowercase().trim().required('Required'),
|
||||
password: string().trim().required('Required'),
|
||||
})
|
||||
|
||||
type Schema = InferType<typeof schema>
|
||||
|
Reference in New Issue
Block a user