2 Commits

Author SHA1 Message Date
Fran Jurmanović
b7999b02e8 fix ApiResponse on success 2025-09-14 21:44:54 +02:00
Fran Jurmanović
4bc74f26d1 update logout method 2025-09-14 21:27:41 +02:00
5 changed files with 13 additions and 15 deletions

7
src/app/logout/route.ts Normal file
View File

@@ -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);
}

View File

@@ -7,6 +7,6 @@ export default async function HomePage() {
if (session.token && session.user) {
redirect('/dashboard');
} else {
redirect('/login');
redirect('/logout');
}
}

View File

@@ -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');
}

View File

@@ -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<T> = {
@@ -35,7 +27,7 @@ export async function fetchServerAPI<T>(
if (!response.ok) {
if (response.status == 401) {
clearAuthAndRedirect();
redirect('/logout');
return { error: 'unauthorized' };
}
throw new Error(
@@ -44,7 +36,7 @@ export async function fetchServerAPI<T>(
}
if (response.headers.get('Content-Type')?.includes('application/json')) {
return await response.json();
return { data: await response.json() };
}
return { message: await response.text() };

View File

@@ -12,7 +12,7 @@ export async function requireAuth() {
const session = await getSession();
if (!session.token || !session.user) {
redirect('/login');
redirect('/logout');
}
return session;