@@ -27,33 +27,46 @@ public static class HttpContextExtension
2727 /// <summary>
2828 /// Gets endpoints specified in config for roles in claims.
2929 /// </summary>
30- /// <param name="httpcontext "></param>
30+ /// <param name="httpContext "></param>
3131 /// <param name="requiredClaims"></param>
3232 /// <returns></returns>
33- public static List < string > GetValidEndpoints ( this HttpContext httpcontext , ILogger < EndpointAuthorizationMiddleware > logger , List < Configurations . ClaimMapping > adminClaims , List < Configurations . ClaimMapping > userClaims )
33+ public static List < string > GetValidEndpoints ( this HttpContext httpContext , ILogger < EndpointAuthorizationMiddleware > logger , List < Configurations . ClaimMapping > adminClaims , List < Configurations . ClaimMapping > userClaims )
3434 {
3535 Guard . Against . Null ( adminClaims ) ;
3636 Guard . Against . Null ( userClaims ) ;
3737
38+ foreach ( var claim in httpContext . User . Claims )
39+ {
40+ logger . UserClaimFound ( claim . Type , claim . Value ) ;
41+
42+ }
43+
3844 foreach ( var claim in adminClaims ! )
3945 {
40- if ( httpcontext . User . HasClaim ( claim . Claim , claim . Role ) )
46+ foreach ( var role in claim . Roles )
4147 {
42- logger . UserClaimFound ( claim . Claim , claim . Role ) ;
43- return new List < string > { "all" } ;
48+ logger . CheckingUserClaim ( claim . Claim , role ) ;
49+ if ( httpContext . User . HasClaim ( claim . Claim , role ) )
50+ {
51+ return new List < string > { "*" } ;
52+ }
4453 }
4554 }
4655
56+ var endpoints = new List < string > ( ) ;
4757 foreach ( var claim in userClaims ! )
4858 {
49- if ( httpcontext . User . HasClaim ( claim . Claim , claim . Role ) )
59+ foreach ( var role in claim . Roles )
5060 {
51- logger . UserClaimFound ( claim . Claim , claim . Role ) ;
52- return claim . Endpoints ! ;
61+ logger . CheckingUserClaim ( claim . Claim , role ) ;
62+ if ( httpContext . User . HasClaim ( claim . Claim , role ) )
63+ {
64+ endpoints . AddRange ( claim . Endpoints ! ) ;
65+ }
5366 }
5467 }
5568
56- return new List < string > ( ) ;
69+ return endpoints . Distinct ( ) . ToList ( ) ;
5770 }
5871 }
5972}
0 commit comments