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..9b44079c 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,7 @@ 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.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 @@