22 KiB
22 KiB
ℹ️ [WEBSITE] INFO: [RouteGuard] Auth page detected
Timestamp: 2026-01-17T15:51:02.368Z
Source: website
[SESSION] Using server component cookies, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [RouteGuard] No session, allowing access to auth page
Timestamp: 2026-01-17T15:51:02.377Z
Source: website
GET /auth/login?returnTo=%2Fdashboard 200 in 90ms
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST START ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Request details
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/',
method: 'GET',
url: 'http://localhost:3000/',
cookieHeaderLength: 0,
cookiePreview: ''
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Fetching session...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
[SESSION] NextRequest cookie header length: 0
[SESSION] NextRequest cookie header:
[SESSION] Using provided cookie header, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Session fetched
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
userId: undefined,
role: undefined,
sessionData: 'null'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Auth session converted
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ authSession: 'null' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Route classification
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/', isPublic: true, requiresRole: null }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Calling handleAuthFlow...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ hasSession: false, sessionRole: undefined, requestedPath: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/',
isPublic: true,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] Public route, showing page
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Action determined
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ actionType: 'SHOW_PAGE', action: '{\n "type": "SHOW_PAGE"\n}' }
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Returning SHOW_PAGE
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] handleAuthFlow result
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
result: '{\n "shouldRedirect": false,\n "shouldShowPage": true\n}'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Decision summary
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/',
hasSession: false,
role: undefined,
shouldRedirect: false,
redirectUrl: undefined
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ALLOWING ACCESS
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ pathname: '/' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST END (ALLOW) ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: Global error handler skipped (server-side)
Timestamp: 2026-01-17T15:51:07.517Z
Source: website
🐛 [WEBSITE] DEBUG: API Request: GET http://api:3000/auth/session
Timestamp: 2026-01-17T15:51:07.519Z
Source: website
Context:
{
requestId: 'req_1768665067519_1',
timestamp: '2026-01-17T15:51:07.519Z',
headers: { 'Content-Type': 'application/json' },
body: undefined
}
ℹ️ [WEBSITE] INFO: API Response: GET http://api:3000/auth/session
Timestamp: 2026-01-17T15:51:07.559Z
Source: website
Context:
{
requestId: 'req_1768665067519_1',
duration: '39.00ms',
status: '200 OK',
body: null
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST START ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Request details
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/dashboard',
method: 'GET',
url: 'http://localhost:3000/dashboard',
cookieHeaderLength: 0,
cookiePreview: ''
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Fetching session...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
[SESSION] NextRequest cookie header length: 0
[SESSION] NextRequest cookie header:
[SESSION] Using provided cookie header, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Session fetched
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
userId: undefined,
role: undefined,
sessionData: 'null'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Auth session converted
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ authSession: 'null' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is NOT public
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Route classification
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard', isPublic: false, requiresRole: null }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Calling handleAuthFlow...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
sessionRole: undefined,
requestedPath: '/dashboard'
}
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is NOT public
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/dashboard',
isPublic: false,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] No session, redirecting to login
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Action determined
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
actionType: 'REDIRECT_TO_LOGIN',
action: '{\n "type": "REDIRECT_TO_LOGIN",\n "returnTo": "/dashboard"\n}'
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/dashboard',
isPublic: false,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] No session, redirecting to login
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Returning REDIRECT_TO_LOGIN
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ loginUrl: '/auth/login?returnTo=%2Fdashboard' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] handleAuthFlow result
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
result: '{\n' +
' "shouldRedirect": true,\n' +
' "redirectUrl": "/auth/login?returnTo=%2Fdashboard"\n' +
'}'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Decision summary
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/dashboard',
hasSession: false,
role: undefined,
shouldRedirect: true,
redirectUrl: '/auth/login?returnTo=%2Fdashboard'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] REDIRECTING
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
from: '/dashboard',
to: 'http://localhost:3000/auth/login?returnTo=%2Fdashboard'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST END (REDIRECT) ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.597Z
%cSource: color: #666; font-weight: bold; website
GET / 307 in 106ms
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST START ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Request details
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/auth/login',
method: 'GET',
url: 'http://localhost:3000/auth/login?returnTo=%2Fdashboard',
cookieHeaderLength: 0,
cookiePreview: ''
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Fetching session...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
[SESSION] NextRequest cookie header length: 0
[SESSION] NextRequest cookie header:
[SESSION] Using provided cookie header, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Session fetched
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
userId: undefined,
role: undefined,
sessionData: 'null'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Auth session converted
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ authSession: 'null' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Route classification
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login', isPublic: true, requiresRole: null }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Calling handleAuthFlow...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
sessionRole: undefined,
requestedPath: '/auth/login'
}
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/auth/login',
isPublic: true,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] Public route, showing page
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Action determined
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ actionType: 'SHOW_PAGE', action: '{\n "type": "SHOW_PAGE"\n}' }
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Returning SHOW_PAGE
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] handleAuthFlow result
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
result: '{\n "shouldRedirect": false,\n "shouldShowPage": true\n}'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Decision summary
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/auth/login',
hasSession: false,
role: undefined,
shouldRedirect: false,
redirectUrl: undefined
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ALLOWING ACCESS
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ pathname: '/auth/login' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST END (ALLOW) ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: Global error handler skipped (server-side)
Timestamp: 2026-01-17T15:51:07.652Z
Source: website
ℹ️ [WEBSITE] INFO: [RouteGuard] enforce called
Timestamp: 2026-01-17T15:51:07.668Z
Source: website
Context:
{ pathname: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteGuard] logicalPathname
Timestamp: 2026-01-17T15:51:07.668Z
Source: website
Context:
{ logicalPathname: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteGuard] Auth page detected
Timestamp: 2026-01-17T15:51:07.669Z
Source: website
[SESSION] Using server component cookies, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [RouteGuard] No session, allowing access to auth page
Timestamp: 2026-01-17T15:51:07.737Z
Source: website
GET /auth/login?returnTo=%2Fdashboard 200 in 203ms
Timestamp: 2026-01-17T15:51:02.368Z
Source: website
[SESSION] Using server component cookies, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [RouteGuard] No session, allowing access to auth page
Timestamp: 2026-01-17T15:51:02.377Z
Source: website
GET /auth/login?returnTo=%2Fdashboard 200 in 90ms
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST START ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Request details
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/',
method: 'GET',
url: 'http://localhost:3000/',
cookieHeaderLength: 0,
cookiePreview: ''
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Fetching session...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
[SESSION] NextRequest cookie header length: 0
[SESSION] NextRequest cookie header:
[SESSION] Using provided cookie header, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Session fetched
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
userId: undefined,
role: undefined,
sessionData: 'null'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Auth session converted
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ authSession: 'null' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.491Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Route classification
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/', isPublic: true, requiresRole: null }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Calling handleAuthFlow...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ hasSession: false, sessionRole: undefined, requestedPath: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/' }
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/',
isPublic: true,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] Public route, showing page
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Action determined
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ actionType: 'SHOW_PAGE', action: '{\n "type": "SHOW_PAGE"\n}' }
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Returning SHOW_PAGE
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] handleAuthFlow result
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
result: '{\n "shouldRedirect": false,\n "shouldShowPage": true\n}'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Decision summary
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/',
hasSession: false,
role: undefined,
shouldRedirect: false,
redirectUrl: undefined
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ALLOWING ACCESS
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ pathname: '/' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST END (ALLOW) ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.492Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: Global error handler skipped (server-side)
Timestamp: 2026-01-17T15:51:07.517Z
Source: website
🐛 [WEBSITE] DEBUG: API Request: GET http://api:3000/auth/session
Timestamp: 2026-01-17T15:51:07.519Z
Source: website
Context:
{
requestId: 'req_1768665067519_1',
timestamp: '2026-01-17T15:51:07.519Z',
headers: { 'Content-Type': 'application/json' },
body: undefined
}
ℹ️ [WEBSITE] INFO: API Response: GET http://api:3000/auth/session
Timestamp: 2026-01-17T15:51:07.559Z
Source: website
Context:
{
requestId: 'req_1768665067519_1',
duration: '39.00ms',
status: '200 OK',
body: null
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST START ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Request details
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/dashboard',
method: 'GET',
url: 'http://localhost:3000/dashboard',
cookieHeaderLength: 0,
cookiePreview: ''
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Fetching session...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
[SESSION] NextRequest cookie header length: 0
[SESSION] NextRequest cookie header:
[SESSION] Using provided cookie header, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Session fetched
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
userId: undefined,
role: undefined,
sessionData: 'null'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Auth session converted
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ authSession: 'null' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is NOT public
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Route classification
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard', isPublic: false, requiresRole: null }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Calling handleAuthFlow...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
sessionRole: undefined,
requestedPath: '/dashboard'
}
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is NOT public
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/dashboard' }
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/dashboard',
isPublic: false,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] No session, redirecting to login
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Action determined
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
actionType: 'REDIRECT_TO_LOGIN',
action: '{\n "type": "REDIRECT_TO_LOGIN",\n "returnTo": "/dashboard"\n}'
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/dashboard',
isPublic: false,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] No session, redirecting to login
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Returning REDIRECT_TO_LOGIN
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ loginUrl: '/auth/login?returnTo=%2Fdashboard' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] handleAuthFlow result
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
result: '{\n' +
' "shouldRedirect": true,\n' +
' "redirectUrl": "/auth/login?returnTo=%2Fdashboard"\n' +
'}'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Decision summary
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/dashboard',
hasSession: false,
role: undefined,
shouldRedirect: true,
redirectUrl: '/auth/login?returnTo=%2Fdashboard'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] REDIRECTING
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.596Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
from: '/dashboard',
to: 'http://localhost:3000/auth/login?returnTo=%2Fdashboard'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST END (REDIRECT) ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.597Z
%cSource: color: #666; font-weight: bold; website
GET / 307 in 106ms
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST START ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Request details
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/auth/login',
method: 'GET',
url: 'http://localhost:3000/auth/login?returnTo=%2Fdashboard',
cookieHeaderLength: 0,
cookiePreview: ''
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Fetching session...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
[SESSION] NextRequest cookie header length: 0
[SESSION] NextRequest cookie header:
[SESSION] Using provided cookie header, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Session fetched
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
userId: undefined,
role: undefined,
sessionData: 'null'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Auth session converted
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ authSession: 'null' }
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Route classification
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login', isPublic: true, requiresRole: null }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Calling handleAuthFlow...
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
hasSession: false,
sessionRole: undefined,
requestedPath: '/auth/login'
}
ℹ️ [WEBSITE] INFO: [RouteConfig] isPublic check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path is public (exact match)
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] requiresRole check
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.608Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteConfig] Path requires no specific role
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ path: '/auth/login' }
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] getAction called
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
requestedPath: '/auth/login',
isPublic: true,
hasSession: false,
requiredRoles: null
}
ℹ️ [WEBSITE] INFO: [AuthFlowRouter] Public route, showing page
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Action determined
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ actionType: 'SHOW_PAGE', action: '{\n "type": "SHOW_PAGE"\n}' }
ℹ️ [WEBSITE] INFO: [handleAuthFlow] Returning SHOW_PAGE
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] handleAuthFlow result
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
result: '{\n "shouldRedirect": false,\n "shouldShowPage": true\n}'
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] Decision summary
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{
pathname: '/auth/login',
hasSession: false,
role: undefined,
shouldRedirect: false,
redirectUrl: undefined
}
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ALLOWING ACCESS
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
%cContext: color: #666; font-weight: bold;
{ pathname: '/auth/login' }
ℹ️ [WEBSITE] INFO: [MIDDLEWARE] ========== REQUEST END (ALLOW) ==========
%cTimestamp: color: #666; font-weight: bold; 2026-01-17T15:51:07.609Z
%cSource: color: #666; font-weight: bold; website
ℹ️ [WEBSITE] INFO: Global error handler skipped (server-side)
Timestamp: 2026-01-17T15:51:07.652Z
Source: website
ℹ️ [WEBSITE] INFO: [RouteGuard] enforce called
Timestamp: 2026-01-17T15:51:07.668Z
Source: website
Context:
{ pathname: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteGuard] logicalPathname
Timestamp: 2026-01-17T15:51:07.668Z
Source: website
Context:
{ logicalPathname: '/auth/login' }
ℹ️ [WEBSITE] INFO: [RouteGuard] Auth page detected
Timestamp: 2026-01-17T15:51:07.669Z
Source: website
[SESSION] Using server component cookies, length: 0
[SESSION] Cookie string:
[SESSION] No cookies found, returning null
ℹ️ [WEBSITE] INFO: [RouteGuard] No session, allowing access to auth page
Timestamp: 2026-01-17T15:51:07.737Z
Source: website
GET /auth/login?returnTo=%2Fdashboard 200 in 203ms