using Microsoft.AspNetCore.Authorization; namespace ZB.MOM.WW.MxGateway.Server.Dashboard; /// /// Handler for : succeeds only when the caller /// is authenticated AND holds one of the requirement's roles. It reads no options at all, which /// is the point — there is no configuration value that can turn this into a bypass. /// public sealed class AuthenticatedDashboardRoleHandler : AuthorizationHandler { /// protected override Task HandleRequirementAsync( AuthorizationHandlerContext context, AuthenticatedDashboardRoleRequirement requirement) { if (context.User.Identity?.IsAuthenticated != true) { return Task.CompletedTask; } foreach (string role in requirement.RequiredRoles) { if (context.User.IsInRole(role)) { context.Succeed(requirement); return Task.CompletedTask; } } return Task.CompletedTask; } }