501 lines
22 KiB
Plaintext
501 lines
22 KiB
Plaintext
ℹ️ [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: [32m'/'[39m,
|
||
method: [32m'GET'[39m,
|
||
url: [32m'http://localhost:3000/'[39m,
|
||
cookieHeaderLength: [33m0[39m,
|
||
cookiePreview: [32m''[39m
|
||
}
|
||
ℹ️ [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: [33mfalse[39m,
|
||
userId: [90mundefined[39m,
|
||
role: [90mundefined[39m,
|
||
sessionData: [32m'null'[39m
|
||
}
|
||
ℹ️ [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: [32m'null'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m, isPublic: [33mtrue[39m, requiresRole: [1mnull[22m }
|
||
ℹ️ [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: [33mfalse[39m, sessionRole: [90mundefined[39m, requestedPath: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'/'[39m,
|
||
isPublic: [33mtrue[39m,
|
||
hasSession: [33mfalse[39m,
|
||
requiredRoles: [1mnull[22m
|
||
}
|
||
ℹ️ [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: [32m'SHOW_PAGE'[39m, action: [32m'{\n "type": "SHOW_PAGE"\n}'[39m }
|
||
ℹ️ [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: [32m'{\n "shouldRedirect": false,\n "shouldShowPage": true\n}'[39m
|
||
}
|
||
ℹ️ [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: [32m'/'[39m,
|
||
hasSession: [33mfalse[39m,
|
||
role: [90mundefined[39m,
|
||
shouldRedirect: [33mfalse[39m,
|
||
redirectUrl: [90mundefined[39m
|
||
}
|
||
ℹ️ [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: [32m'/'[39m }
|
||
ℹ️ [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: [32m'req_1768665067519_1'[39m,
|
||
timestamp: [32m'2026-01-17T15:51:07.519Z'[39m,
|
||
headers: { [32m'Content-Type'[39m: [32m'application/json'[39m },
|
||
body: [90mundefined[39m
|
||
}
|
||
ℹ️ [WEBSITE] INFO: API Response: GET http://api:3000/auth/session
|
||
Timestamp: 2026-01-17T15:51:07.559Z
|
||
Source: website
|
||
Context:
|
||
{
|
||
requestId: [32m'req_1768665067519_1'[39m,
|
||
duration: [32m'39.00ms'[39m,
|
||
status: [32m'200 OK'[39m,
|
||
body: [1mnull[22m
|
||
}
|
||
ℹ️ [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: [32m'/dashboard'[39m,
|
||
method: [32m'GET'[39m,
|
||
url: [32m'http://localhost:3000/dashboard'[39m,
|
||
cookieHeaderLength: [33m0[39m,
|
||
cookiePreview: [32m''[39m
|
||
}
|
||
ℹ️ [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: [33mfalse[39m,
|
||
userId: [90mundefined[39m,
|
||
role: [90mundefined[39m,
|
||
sessionData: [32m'null'[39m
|
||
}
|
||
ℹ️ [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: [32m'null'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m, isPublic: [33mfalse[39m, requiresRole: [1mnull[22m }
|
||
ℹ️ [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: [33mfalse[39m,
|
||
sessionRole: [90mundefined[39m,
|
||
requestedPath: [32m'/dashboard'[39m
|
||
}
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m }
|
||
ℹ️ [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: [32m'/dashboard'[39m,
|
||
isPublic: [33mfalse[39m,
|
||
hasSession: [33mfalse[39m,
|
||
requiredRoles: [1mnull[22m
|
||
}
|
||
ℹ️ [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: [32m'REDIRECT_TO_LOGIN'[39m,
|
||
action: [32m'{\n "type": "REDIRECT_TO_LOGIN",\n "returnTo": "/dashboard"\n}'[39m
|
||
}
|
||
ℹ️ [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: [32m'/dashboard'[39m,
|
||
isPublic: [33mfalse[39m,
|
||
hasSession: [33mfalse[39m,
|
||
requiredRoles: [1mnull[22m
|
||
}
|
||
ℹ️ [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: [32m'/auth/login?returnTo=%2Fdashboard'[39m }
|
||
ℹ️ [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: [32m'{\n'[39m +
|
||
[32m' "shouldRedirect": true,\n'[39m +
|
||
[32m' "redirectUrl": "/auth/login?returnTo=%2Fdashboard"\n'[39m +
|
||
[32m'}'[39m
|
||
}
|
||
ℹ️ [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: [32m'/dashboard'[39m,
|
||
hasSession: [33mfalse[39m,
|
||
role: [90mundefined[39m,
|
||
shouldRedirect: [33mtrue[39m,
|
||
redirectUrl: [32m'/auth/login?returnTo=%2Fdashboard'[39m
|
||
}
|
||
ℹ️ [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: [32m'/dashboard'[39m,
|
||
to: [32m'http://localhost:3000/auth/login?returnTo=%2Fdashboard'[39m
|
||
}
|
||
ℹ️ [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: [32m'/auth/login'[39m,
|
||
method: [32m'GET'[39m,
|
||
url: [32m'http://localhost:3000/auth/login?returnTo=%2Fdashboard'[39m,
|
||
cookieHeaderLength: [33m0[39m,
|
||
cookiePreview: [32m''[39m
|
||
}
|
||
ℹ️ [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: [33mfalse[39m,
|
||
userId: [90mundefined[39m,
|
||
role: [90mundefined[39m,
|
||
sessionData: [32m'null'[39m
|
||
}
|
||
ℹ️ [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: [32m'null'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m, isPublic: [33mtrue[39m, requiresRole: [1mnull[22m }
|
||
ℹ️ [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: [33mfalse[39m,
|
||
sessionRole: [90mundefined[39m,
|
||
requestedPath: [32m'/auth/login'[39m
|
||
}
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m,
|
||
isPublic: [33mtrue[39m,
|
||
hasSession: [33mfalse[39m,
|
||
requiredRoles: [1mnull[22m
|
||
}
|
||
ℹ️ [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: [32m'SHOW_PAGE'[39m, action: [32m'{\n "type": "SHOW_PAGE"\n}'[39m }
|
||
ℹ️ [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: [32m'{\n "shouldRedirect": false,\n "shouldShowPage": true\n}'[39m
|
||
}
|
||
ℹ️ [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: [32m'/auth/login'[39m,
|
||
hasSession: [33mfalse[39m,
|
||
role: [90mundefined[39m,
|
||
shouldRedirect: [33mfalse[39m,
|
||
redirectUrl: [90mundefined[39m
|
||
}
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [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: [32m'/auth/login'[39m }
|
||
ℹ️ [WEBSITE] INFO: [RouteGuard] logicalPathname
|
||
Timestamp: 2026-01-17T15:51:07.668Z
|
||
Source: website
|
||
Context:
|
||
{ logicalPathname: [32m'/auth/login'[39m }
|
||
ℹ️ [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
|