using System.Linq; using System.Threading.Tasks; using IdentityModel; using Microsoft.AspNetCore.Authorization; namespace xCommons.Authorization { public partial class RequiredRolesHandler : AuthorizationHandler { protected override Task HandleRequirementAsync ( AuthorizationHandlerContext context, RequiredRolesRequirement requirement ) { // var conatinsRole = context.User.HasClaim (c => c.Type == JwtClaimTypes.Role); if (!conatinsRole) { return Task.CompletedTask; } // var roleClaim = context.User.Claims.FirstOrDefault (c => c.Type == JwtClaimTypes.Role); if (roleClaim == null || !requirement.Roles.Contains (roleClaim.Value) ) { return Task.CompletedTask; } // context.Succeed (requirement); return Task.CompletedTask; } } }