From 57cc2c4584db5a77627916871807326536f2ae00 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Sun, 3 Aug 2025 09:58:34 +0300 Subject: [PATCH] [frontend]: add auth middleware --- frontend/src/middleware.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 frontend/src/middleware.ts diff --git a/frontend/src/middleware.ts b/frontend/src/middleware.ts new file mode 100644 index 0000000..c9dcd58 --- /dev/null +++ b/frontend/src/middleware.ts @@ -0,0 +1,29 @@ +import { type NextRequest, NextResponse } from 'next/server'; + +export default function middleware(request: NextRequest) { + const { url, cookies, nextUrl } = request; + + const session = cookies.get('session')?.value; + + const isAuthRoute = nextUrl.pathname.startsWith('/account'); + const isDeactivateRoute = nextUrl.pathname === '/account/deactivate'; + const isDashboardRoute = nextUrl.pathname.startsWith('/dashboard'); + + if (!session && isDashboardRoute) { + return NextResponse.redirect(new URL('/account/login', url)); + } + + if (!session && isDeactivateRoute) { + return NextResponse.redirect(new URL('/account/login', url)); + } + + if (session && isAuthRoute && !isDeactivateRoute) { + return NextResponse.redirect(new URL('/dashboard/settings', url)); + } + + return NextResponse.next(); +} + +export const config = { + matcher: ['/account/:path*', '/dashboard/:path*'], +};