HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux mail.btech-izolacje.pl 5.15.0-140-generic #150-Ubuntu SMP Sat Apr 12 06:00:09 UTC 2025 x86_64
User: pewna6876 (1017)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //srv/rmgun_admin/admin-next/src/middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

export async function middleware(request: NextRequest) {
	const { pathname } = request.nextUrl
	const sessionCookie = request.cookies.get('session')

	// Skip middleware for API routes - auth is handled at the route level via withAuth wrapper
	if (pathname.startsWith('/api')) {
		return NextResponse.next()
	}

	// Login page - redirect to dashboard if session exists
	// Actual validation happens client-side
	if (pathname === '/login') {
		if (sessionCookie) {
			return NextResponse.redirect(new URL('/dashboard', request.url))
		}
		return NextResponse.next()
	}

	// Root path - redirect based on session status
	if (pathname === '/') {
		if (sessionCookie) {
			return NextResponse.redirect(new URL('/dashboard', request.url))
		} else {
			return NextResponse.redirect(new URL('/login', request.url))
		}
	}

	// All other routes are protected - check for session cookie
	if (!sessionCookie) {
		return NextResponse.redirect(new URL('/login', request.url))
	}

	// Session cookie exists, let the request through
	// Actual validation happens in components via /api/verify
	return NextResponse.next()
}

export const config = {
	matcher: [
		/*
		 * Match all request paths except for the ones starting with:
		 * - _next/static (static files)
		 * - _next/image (image optimization files)
		 * - favicon.ico (favicon file)
		 */
		'/((?!_next/static|_next/image|favicon.ico).*)',
	],
}