diff --git a/src/app/logout/route.ts b/src/app/logout/route.ts new file mode 100644 index 0000000..f40f3fc --- /dev/null +++ b/src/app/logout/route.ts @@ -0,0 +1,7 @@ +import { logout } from '@/lib/auth/server'; +import { redirect, RedirectType } from 'next/navigation'; + +export async function GET() { + await logout(); + redirect('/login', RedirectType.replace); +} diff --git a/src/app/page.tsx b/src/app/page.tsx index 7c659bf..900ac7d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -7,6 +7,6 @@ export default async function HomePage() { if (session.token && session.user) { redirect('/dashboard'); } else { - redirect('/login'); + redirect('/logout'); } } diff --git a/src/lib/actions/auth.ts b/src/lib/actions/auth.ts index badb92e..5806b49 100644 --- a/src/lib/actions/auth.ts +++ b/src/lib/actions/auth.ts @@ -1,6 +1,6 @@ 'use server'; -import { redirect } from 'next/navigation'; +import { redirect, RedirectType } from 'next/navigation'; import { loginUser } from '@/lib/api/server/auth'; import { login, logout } from '@/lib/auth/server'; @@ -42,6 +42,5 @@ export async function loginAction(prevState: LoginResult, formData: FormData) { } export async function logoutAction() { - await logout(); - redirect('/login'); + redirect('/logout'); } diff --git a/src/lib/api/server/base.ts b/src/lib/api/server/base.ts index 9818f8a..9483343 100644 --- a/src/lib/api/server/base.ts +++ b/src/lib/api/server/base.ts @@ -1,13 +1,5 @@ -import { cookies } from 'next/headers'; import { redirect } from 'next/navigation'; -export async function clearAuthAndRedirect(to = '/login') { - const c = await cookies(); - c.delete('session'); - c.delete('refresh'); - redirect(to); -} - const BASE_URL = process.env.API_BASE_URL || 'http://localhost:8080'; type ApiResponse = { @@ -35,7 +27,7 @@ export async function fetchServerAPI( if (!response.ok) { if (response.status == 401) { - clearAuthAndRedirect(); + redirect('/logout'); return { error: 'unauthorized' }; } throw new Error( diff --git a/src/lib/auth/server.ts b/src/lib/auth/server.ts index f808590..df099c6 100644 --- a/src/lib/auth/server.ts +++ b/src/lib/auth/server.ts @@ -12,7 +12,7 @@ export async function requireAuth() { const session = await getSession(); if (!session.token || !session.user) { - redirect('/login'); + redirect('/logout'); } return session;