diff --git a/src/app/logout/page.tsx b/src/app/logout/page.tsx
new file mode 100644
index 0000000..6bab7bd
--- /dev/null
+++ b/src/app/logout/page.tsx
@@ -0,0 +1,12 @@
+import { logout } from '@/lib/auth/server';
+import { redirect, RedirectType } from 'next/navigation';
+import React from 'react';
+
+export async function GET() {
+ await logout();
+ redirect('/login', RedirectType.replace);
+}
+
+export default function LogoutPage() {
+ return ;
+}
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;