From 6dd396150aff14aad4b3f26a0a9224d78ec5dce7 Mon Sep 17 00:00:00 2001 From: Mohamed Melouk <42706279+cobraprojects@users.noreply.github.com> Date: Wed, 6 May 2026 16:50:25 +0300 Subject: [PATCH 1/2] fix email verification --- apps/blog-next/app/api/verify-email/route.ts | 9 +++-- apps/blog-next/app/verify-email/page.tsx | 5 ++- apps/blog-nuxt/pages/verify-email.vue | 10 ++++- .../blog-nuxt/server/api/verify-email.post.ts | 9 +++-- apps/blog-sveltekit/config/app.ts | 2 +- apps/blog-sveltekit/config/broadcast.ts | 2 +- .../src/routes/api/verify-email/+server.ts | 9 +++-- .../src/routes/login/+page.svelte | 7 +++- .../src/routes/register/+page.svelte | 7 +++- .../src/routes/verify-email/+page.svelte | 12 +++++- tests/example-app-auth-flow.mjs | 38 +++++++++++++++++++ 11 files changed, 90 insertions(+), 20 deletions(-) diff --git a/apps/blog-next/app/api/verify-email/route.ts b/apps/blog-next/app/api/verify-email/route.ts index ab7cf904..341a6041 100644 --- a/apps/blog-next/app/api/verify-email/route.ts +++ b/apps/blog-next/app/api/verify-email/route.ts @@ -1,4 +1,4 @@ -import { verification } from '@holo-js/auth' +import { check, verification } from '@holo-js/auth' import { sanitizeFlashedInput, validate } from '@holo-js/forms' import { verifyEmailForm } from '@/lib/schemas/auth' @@ -12,6 +12,7 @@ export async function POST(request: Request) { }) } + const wasAuthenticated = await check() const { error } = await verification.consume(submission.data.token) if (error) { return Response.json({ @@ -26,7 +27,9 @@ export async function POST(request: Request) { } return Response.json(submission.success({ - message: 'Email address verified. You can sign in now.', - redirectTo: '/login', + message: wasAuthenticated + ? 'Email address verified.' + : 'Email address verified. You can sign in now.', + redirectTo: wasAuthenticated ? '/admin' : '/login', })) } diff --git a/apps/blog-next/app/verify-email/page.tsx b/apps/blog-next/app/verify-email/page.tsx index 0299e3a1..18e1b744 100644 --- a/apps/blog-next/app/verify-email/page.tsx +++ b/apps/blog-next/app/verify-email/page.tsx @@ -5,7 +5,7 @@ import { useState } from 'react' import Link from 'next/link' import { useRouter, useSearchParams } from 'next/navigation' -import { useForm } from '@holo-js/adapter-next/client' +import { useAuth, useForm } from '@holo-js/adapter-next/client' import { verifyEmailForm } from '@/lib/schemas/auth' @@ -21,6 +21,7 @@ const panelStyle = { function VerifyEmailPageContent() { const router = useRouter() + const auth = useAuth() const searchParams = useSearchParams() const token = searchParams.get('token') ?? '' const email = searchParams.get('email') ?? '' @@ -34,6 +35,8 @@ function VerifyEmailPageContent() { const response = await fetch('/api/verify-email', { method: 'POST', body: formData }) const submission = await response.json() if (submission?.ok === true && typeof submission.data?.redirectTo === 'string') { + await auth.refreshUser() + router.refresh() router.replace(submission.data.redirectTo) } return submission diff --git a/apps/blog-nuxt/pages/verify-email.vue b/apps/blog-nuxt/pages/verify-email.vue index e132e1c4..62d8d580 100644 --- a/apps/blog-nuxt/pages/verify-email.vue +++ b/apps/blog-nuxt/pages/verify-email.vue @@ -1,9 +1,10 @@