Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
afedyanin committed Oct 21, 2023
1 parent 15e01c5 commit a891ae6
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions src/BlazorBff/Helpers/JwtRolesHelper.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace BlazorBff.Helpers;

public static class JwtRolesHelper
{
private const string _resourceAccess = "resource_access";
private const string _realmAccess = "realm_access";

public static string[] ExtractRoles(
string? rawJwtAccessToken,
bool includeRealmRoles = false)
Expand All @@ -19,12 +23,12 @@ public static class JwtRolesHelper
var accessTokenDecoded = handler.ReadJwtToken(rawJwtAccessToken);
var res = new List<string>();

var resAccess = accessTokenDecoded.Claims.FirstOrDefault(c => c.Type == "resource_access");
var resAccess = accessTokenDecoded.Claims.FirstOrDefault(c => c.Type == _resourceAccess);
res.AddRange(GetResourceAccessRoles(resAccess));

if (includeRealmRoles)
{
var realmAccess = accessTokenDecoded.Claims.FirstOrDefault(c => c.Type == "realm_access");
var realmAccess = accessTokenDecoded.Claims.FirstOrDefault(c => c.Type == _realmAccess);
res.AddRange(GetRealmAccessRoles(realmAccess));
}

Expand All @@ -33,12 +37,12 @@ public static class JwtRolesHelper

private static string[] GetRealmAccessRoles(Claim? realmAccessClaim)
{
if (realmAccessClaim == null || realmAccessClaim.Type != "realm_access")
if (realmAccessClaim == null || realmAccessClaim.Type != _realmAccess)
{
return Array.Empty<string>();
}

var realmAccess = JsonSerializer.Deserialize<Realm_Access>(realmAccessClaim.Value);
var realmAccess = JsonSerializer.Deserialize<RealmAccess>(realmAccessClaim.Value);

if (realmAccess == null)
{
Expand All @@ -50,12 +54,12 @@ private static string[] GetRealmAccessRoles(Claim? realmAccessClaim)

private static string[] GetResourceAccessRoles(Claim? resourceAccessClaim)
{
if (resourceAccessClaim == null || resourceAccessClaim.Type != "resource_access")
if (resourceAccessClaim == null || resourceAccessClaim.Type != _resourceAccess)
{
return Array.Empty<string>();
}

var resourceAccess = JsonSerializer.Deserialize<Resource_Access>(resourceAccessClaim.Value);
var resourceAccess = JsonSerializer.Deserialize<ResourceAccess>(resourceAccessClaim.Value);

if (resourceAccess == null || resourceAccess.Account == null)
{
Expand All @@ -65,16 +69,19 @@ private static string[] GetResourceAccessRoles(Claim? resourceAccessClaim)
return resourceAccess.Account.Roles;
}

private sealed record Realm_Access
private sealed record RealmAccess
{
[JsonPropertyName("roles")]
public string[] Roles { get; init; } = Array.Empty<string>();
}
private sealed record Resource_Access
private sealed record ResourceAccess
{
[JsonPropertyName("account")]
public Account? Account { get; init; }
}
private sealed record Account
{
[JsonPropertyName("roles")]
public string[] Roles { get; init; } = Array.Empty<string>();
}
}
Expand Down

0 comments on commit a891ae6

Please sign in to comment.