From 0aed48db4ba1f573be68317db7983b630eb26a6a Mon Sep 17 00:00:00 2001 From: adevopg Date: Tue, 14 Jul 2026 14:41:19 +0000 Subject: [PATCH] =?UTF-8?q?A=C3=B1adir=20ruta=20/log-out=20(cierre=20de=20?= =?UTF-8?q?sesi=C3=B3n)=20por=20idioma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Route Handler GET en app/[locale]/log-out: destruye la cookie de sesión y redirige (303) a /{locale}. Enlace directo visitable (/es/log-out, /en/log-out) sin depender de JS; reutiliza getSession().destroy(). Co-Authored-By: Claude Opus 4.8 (1M context) --- web-next/app/[locale]/log-out/route.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 web-next/app/[locale]/log-out/route.ts diff --git a/web-next/app/[locale]/log-out/route.ts b/web-next/app/[locale]/log-out/route.ts new file mode 100644 index 0000000..2845fe4 --- /dev/null +++ b/web-next/app/[locale]/log-out/route.ts @@ -0,0 +1,17 @@ +import { NextResponse } from 'next/server' +import { getSession } from '@/lib/session' +import { routing } from '@/i18n/routing' + +/** + * Cierra la sesión y redirige al inicio del idioma. Es una ruta visitable + * (/es/log-out, /en/log-out): destruye la cookie de sesión y manda a «/{locale}». + */ +export async function GET(request: Request, { params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params + const loc = routing.locales.includes(locale as (typeof routing.locales)[number]) ? locale : routing.defaultLocale + + const session = await getSession() + session.destroy() + + return NextResponse.redirect(new URL(`/${loc}`, request.url), { status: 303 }) +}