Skip to content

Commit

Permalink
Use hashset in requirement handler
Browse files Browse the repository at this point in the history
  • Loading branch information
asimmon committed Jun 20, 2024
1 parent 5d6be41 commit 9dd8831
Showing 1 changed file with 4 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ protected override Task HandleRequirementAsync(AuthorizationHandlerContext conte
return Task.CompletedTask;
}

private bool TryGetRequiredScopes(AuthorizationHandlerContext context, [NotNullWhen(true)] out string[]? requiredScopes)
private bool TryGetRequiredScopes(AuthorizationHandlerContext context, [NotNullWhen(true)] out HashSet<string>? requiredScopes)
{
requiredScopes = null;

Expand All @@ -65,7 +65,7 @@ private bool TryGetRequiredScopes(AuthorizationHandlerContext context, [NotNullW
return false;
}

requiredScopes = requiredPermissions.SelectMany(this.FormatScopes).ToArray();
requiredScopes = requiredPermissions.SelectMany(this.FormatScopes).ToHashSet(StringComparer.Ordinal);
return true;
}

Expand All @@ -74,10 +74,10 @@ private string[] FormatScopes(string requiredPermission)
return [requiredPermission, $"{this._jwtOptions.Audience}:{requiredPermission}"];
}

private static bool HasOneOfScope(ClaimsPrincipal claimsPrincipal, string[] requiredPermissions)
private static bool HasOneOfScope(ClaimsPrincipal claimsPrincipal, HashSet<string> requiredPermissions)
{
return claimsPrincipal.Claims
.Where(claim => ScopeClaimTypes.Contains(claim.Type))
.Any(claim => requiredPermissions.Contains(claim.Value, StringComparer.Ordinal));
.Any(claim => requiredPermissions.Contains(claim.Value));
}
}

0 comments on commit 9dd8831

Please sign in to comment.