Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4bc74f26d1 |
7
src/app/logout/route.ts
Normal file
7
src/app/logout/route.ts
Normal 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);
|
||||||
|
}
|
||||||
@@ -7,6 +7,6 @@ export default async function HomePage() {
|
|||||||
if (session.token && session.user) {
|
if (session.token && session.user) {
|
||||||
redirect('/dashboard');
|
redirect('/dashboard');
|
||||||
} else {
|
} else {
|
||||||
redirect('/login');
|
redirect('/logout');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use server';
|
'use server';
|
||||||
|
|
||||||
import { redirect } from 'next/navigation';
|
import { redirect, RedirectType } from 'next/navigation';
|
||||||
import { loginUser } from '@/lib/api/server/auth';
|
import { loginUser } from '@/lib/api/server/auth';
|
||||||
import { login, logout } from '@/lib/auth/server';
|
import { login, logout } from '@/lib/auth/server';
|
||||||
|
|
||||||
@@ -42,6 +42,5 @@ export async function loginAction(prevState: LoginResult, formData: FormData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function logoutAction() {
|
export async function logoutAction() {
|
||||||
await logout();
|
redirect('/logout');
|
||||||
redirect('/login');
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,5 @@
|
|||||||
import { cookies } from 'next/headers';
|
|
||||||
import { redirect } from 'next/navigation';
|
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';
|
const BASE_URL = process.env.API_BASE_URL || 'http://localhost:8080';
|
||||||
|
|
||||||
type ApiResponse<T> = {
|
type ApiResponse<T> = {
|
||||||
@@ -35,7 +27,7 @@ export async function fetchServerAPI<T>(
|
|||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
if (response.status == 401) {
|
if (response.status == 401) {
|
||||||
clearAuthAndRedirect();
|
redirect('/logout');
|
||||||
return { error: 'unauthorized' };
|
return { error: 'unauthorized' };
|
||||||
}
|
}
|
||||||
throw new Error(
|
throw new Error(
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export async function requireAuth() {
|
|||||||
const session = await getSession();
|
const session = await getSession();
|
||||||
|
|
||||||
if (!session.token || !session.user) {
|
if (!session.token || !session.user) {
|
||||||
redirect('/login');
|
redirect('/logout');
|
||||||
}
|
}
|
||||||
|
|
||||||
return session;
|
return session;
|
||||||
|
|||||||
Reference in New Issue
Block a user