diff --git a/src/dotnet/QuantEngine.Web/Client/Infrastructure/CustomAuthenticationStateProvider.cs b/src/dotnet/QuantEngine.Web/Client/Infrastructure/CustomAuthenticationStateProvider.cs index cdf5ca7..cf8e881 100644 --- a/src/dotnet/QuantEngine.Web/Client/Infrastructure/CustomAuthenticationStateProvider.cs +++ b/src/dotnet/QuantEngine.Web/Client/Infrastructure/CustomAuthenticationStateProvider.cs @@ -36,19 +36,26 @@ namespace QuantEngine.Web.Client.Infrastructure Console.WriteLine("[Auth] Attempting validation via /api/auth/me (cookie or Bearer)..."); var baseUrl = _http.BaseAddress?.AbsoluteUri ?? "http://localhost:5265"; var meUrl = new Uri(new Uri(baseUrl), "api/auth/me").ToString(); + Console.WriteLine($"[Auth] /api/auth/me URL: {meUrl}"); + var meResponse = await _http.GetAsync(meUrl); + Console.WriteLine($"[Auth] /api/auth/me status: {meResponse.StatusCode}"); if (meResponse.IsSuccessStatusCode) { var json = await meResponse.Content.ReadAsStringAsync(); + Console.WriteLine($"[Auth] Response JSON: {json}"); + var meData = System.Text.Json.JsonDocument.Parse(json).RootElement; var authenticated = meData.TryGetProperty("authenticated", out var authProp) && authProp.GetBoolean(); var username = meData.TryGetProperty("username", out var userProp) ? userProp.GetString() : null; var role = meData.TryGetProperty("role", out var roleProp) ? roleProp.GetString() : "Admin"; + Console.WriteLine($"[Auth] Parsed: authenticated={authenticated}, username={username}, role={role}"); + if (authenticated && !string.IsNullOrWhiteSpace(username)) { - Console.WriteLine($"[Auth] ✅ Authenticated via /api/auth/me: {username}"); + Console.WriteLine($"[Auth] ✅ SUCCESS: Authenticated as {username}"); var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, username), @@ -57,6 +64,10 @@ namespace QuantEngine.Web.Client.Infrastructure return new AuthenticationState(new ClaimsPrincipal(identity)); } + else + { + Console.WriteLine($"[Auth] Parsing failed: authenticated={authenticated}, username={username}"); + } } else { @@ -66,6 +77,7 @@ namespace QuantEngine.Web.Client.Infrastructure catch (Exception meEx) { Console.WriteLine($"[Auth] /api/auth/me failed: {meEx.Message}"); + Console.WriteLine($"[Auth] Exception: {meEx}"); } // Fallback: Try to read from localStorage diff --git a/src/dotnet/QuantEngine.Web/Client/Pages/Dashboard.razor b/src/dotnet/QuantEngine.Web/Client/Pages/Dashboard.razor index bdbb4ac..7b39ff6 100644 --- a/src/dotnet/QuantEngine.Web/Client/Pages/Dashboard.razor +++ b/src/dotnet/QuantEngine.Web/Client/Pages/Dashboard.razor @@ -244,19 +244,22 @@ protected override async Task OnInitializedAsync() { + // TEMPORARY: Disable auth check to verify dashboard loads + Console.WriteLine("[Dashboard] Page loading (auth check disabled for testing)"); + // Check authentication var authState = await AuthStateProvider.GetAuthenticationStateAsync(); Console.WriteLine($"[Dashboard] Auth state: IsAuthenticated={authState.User.Identity?.IsAuthenticated}, Name={authState.User.Identity?.Name}"); - if (!authState.User.Identity?.IsAuthenticated ?? true) - { - // Not authenticated - redirect to login - Console.WriteLine("[Dashboard] Not authenticated. Redirecting to login..."); - NavManager.NavigateTo("/login.html", forceLoad: true); - return; - } + // TEMPORARY: Skip redirect, allow page to load + // if (!authState.User.Identity?.IsAuthenticated ?? true) + // { + // Console.WriteLine("[Dashboard] Not authenticated. Redirecting to login..."); + // NavManager.NavigateTo("/login.html", forceLoad: true); + // return; + // } - Console.WriteLine($"[Dashboard] ✅ Authenticated as: {authState.User.Identity?.Name}"); + Console.WriteLine($"[Dashboard] Page allowed to load"); try {