using System.Security.Claims; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Server; using Microsoft.AspNetCore.Http; namespace ScadaLink.CentralUI.Auth; /// /// Bridges ASP.NET Core cookie authentication with Blazor Server's auth state. /// The cookie middleware has already validated and decrypted the cookie by the time /// the Blazor circuit is established, so we just read HttpContext.User. /// public class CookieAuthenticationStateProvider : ServerAuthenticationStateProvider { private readonly IHttpContextAccessor _httpContextAccessor; public CookieAuthenticationStateProvider(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public override Task GetAuthenticationStateAsync() { var user = _httpContextAccessor.HttpContext?.User ?? new ClaimsPrincipal(new ClaimsIdentity()); return Task.FromResult(new AuthenticationState(user)); } }