11import { NextResponse } from 'next/server' ;
22import type { NextRequest } from 'next/server' ;
33
4- const PUBLIC_PATHS = [ '/login' , '/api/auth' , '/api/health' ] ;
4+ const PUBLIC_PATHS = [ '/login' , '/api/auth' , '/api/health' , '/api/config' ] ;
55
66export async function middleware ( request : NextRequest ) {
77 const pathname = request . nextUrl . pathname ;
@@ -13,27 +13,24 @@ export async function middleware(request: NextRequest) {
1313
1414 // Check for authentication cookie
1515 const authCookie = request . cookies . get ( 'auth-token' ) ;
16+ const passwordSetCookie = request . cookies . get ( 'password-required' ) ;
1617
17- // Check if this looks like a valid auth token (basic validation)
18- // Real validation happens in the API routes
18+ // If we have a valid auth token, allow access
1919 if ( authCookie && authCookie . value && authCookie . value . startsWith ( 'YXV0aGVudGljYXRlZDo' ) ) {
2020 return NextResponse . next ( ) ;
2121 }
2222
23- // Check if we're in development mode (no auth required)
24- if ( process . env . NODE_ENV === 'development' && ! authCookie ) {
25- // In development, only redirect if there's evidence a password was set
26- // This is determined by the presence of a redirect parameter from a previous attempt
27- const hasRedirect = request . nextUrl . searchParams . get ( 'redirect' ) ;
28- if ( ! hasRedirect ) {
29- return NextResponse . next ( ) ;
30- }
23+ // Check if password is required (based on cookie set by config check)
24+ if ( passwordSetCookie && passwordSetCookie . value === 'true' ) {
25+ // Password is required but no valid auth token, redirect to login
26+ const loginUrl = new URL ( '/login' , request . url ) ;
27+ loginUrl . searchParams . set ( 'redirect' , pathname ) ;
28+ return NextResponse . redirect ( loginUrl ) ;
3129 }
3230
33- // Redirect to login page
34- const loginUrl = new URL ( '/login' , request . url ) ;
35- loginUrl . searchParams . set ( 'redirect' , pathname ) ;
36- return NextResponse . redirect ( loginUrl ) ;
31+ // No password required or not yet determined, allow access
32+ // The client will check and set the password-required cookie if needed
33+ return NextResponse . next ( ) ;
3734}
3835
3936export const config = {
0 commit comments