diff --git a/apps/app/components/landing/MagicLinkForm.vue b/apps/app/components/landing/MagicLinkForm.vue index 12358b0..413fcb3 100644 --- a/apps/app/components/landing/MagicLinkForm.vue +++ b/apps/app/components/landing/MagicLinkForm.vue @@ -10,16 +10,16 @@ import { useLanding } from '~/composables/useLanding' * Monté plusieurs fois sur la landing (hero + CTA final) : les ids champ/erreur * sont générés via useId() pour rester uniques dans le DOM (a11y). * - * Périmètre de CETTE issue = l'UI du flux. L'envoi réel du lien (génération de - * token + e-mail) relève du WS auth/magic-link : on l'appelle via la prop - * `onSubmit`, à brancher sur l'endpoint quand il existera. Par défaut le flux - * affiche l'écran de confirmation sans prétendre avoir envoyé un e-mail. + * L'envoi réel passe par useAuth().signIn (Better Auth magic-link). La prop + * `onSubmit` reste disponible pour surcharger le comportement (tests, variantes). */ const props = defineProps<{ - /** Brancher l'envoi réel du lien ici (WS auth). */ + /** Surcharge de l'envoi (défaut : useAuth().signIn). */ onSubmit?: (email: string) => Promise }>() +const { signIn } = useAuth() + const { m } = useLanding() const uid = useId() @@ -43,7 +43,12 @@ async function submit() { } status.value = 'pending' try { - await props.onSubmit?.(value) + if (props.onSubmit) { + await props.onSubmit(value) + } else { + const ok = await signIn(value) + if (!ok) throw new Error('signIn failed') + } status.value = 'sent' } catch { status.value = 'idle' diff --git a/apps/app/layouts/default.vue b/apps/app/layouts/default.vue index 4da8f7a..f9d5f37 100644 --- a/apps/app/layouts/default.vue +++ b/apps/app/layouts/default.vue @@ -188,7 +188,12 @@ const year = new Date().getFullYear() -
+ +
diff --git a/apps/app/pages/connexion.vue b/apps/app/pages/connexion.vue index 48593cb..8251367 100644 --- a/apps/app/pages/connexion.vue +++ b/apps/app/pages/connexion.vue @@ -10,6 +10,10 @@ const toast = useToast() const email = ref('') const sent = ref(false) +// En dev sans SMTP, l'email n'est jamais envoyé : le lien magique est loggé +// dans le terminal du serveur. On l'affiche pour ne pas chercher en vain. +const isDev = import.meta.dev + async function handleSubmit() { if (!email.value) return const ok = await signIn(email.value) @@ -88,6 +92,15 @@ function changeEmail() {

+

+ Mode dev sans SMTP : aucun email n'est réellement envoyé. Le lien de connexion est affiché + dans le terminal du serveur ([DEV] Magic-link…) — copie-le + dans le navigateur. +

+
Renvoyer le lien diff --git a/apps/app/pages/cv/demo.vue b/apps/app/pages/cv/demo.vue index 10f2500..e6d5fc9 100644 --- a/apps/app/pages/cv/demo.vue +++ b/apps/app/pages/cv/demo.vue @@ -127,13 +127,14 @@ async function handleExport() {