Skip to content

Commit d644af2

Browse files
Revert "refactor(Core.Application.Pipelines.Authorization): improve role matching logic"
This reverts commit 156054c.
1 parent 4bba449 commit d644af2

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

src/Core.Application/Pipelines/Authorization/AuthorizationBehavior.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,19 @@ private bool isHasRequiredRole(IEnumerable<string> identityRoles, ReadOnlySpan<c
4040
{
4141
bool isMatch = false;
4242
foreach (var role in identityRoles)
43-
{
44-
for (int i = 0, j = 0; i < requiredRoleClaims.Length; ++i)
43+
for (int i = 0; i < requiredRoleClaims.Length; ++i)
4544
{
46-
if (requiredRoleClaims[i] == role[j])
47-
{
45+
if (requiredRoleClaims[i] == ',')
46+
continue;
47+
48+
if (requiredRoleClaims[i] == role[i])
4849
isMatch = true;
49-
if (j + 1 < role.Length) ++j;
50-
}
5150
else
5251
{
5352
isMatch = false;
54-
j = 0;
53+
break;
5554
}
5655
}
57-
}
5856

5957
return isMatch;
6058
}

src/tests/Core.Application.Tests/Core.Application.Tests/Pipelines/AuthorizationBehaviorTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public async Task Handle_ValidRequest_ReturnsResponse()
2525

2626
public class ValidSecuredRequest : IRequest<int>, ISecuredRequest
2727
{
28-
public IEnumerable<string> IdentityRoles { get; set; } = [];
28+
public IEnumerable<string> IdentityRoles { get; set; }
2929
public ReadOnlySpan<char> RequiredRoleClaims => "".AsSpan();
3030
}
3131

@@ -44,7 +44,7 @@ await Assert.ThrowsAsync<AuthenticationException>(
4444

4545
public class InvalidSecuredRequest : IRequest<int>, ISecuredRequest
4646
{
47-
public IEnumerable<string> IdentityRoles { get; set; } = [];
47+
public IEnumerable<string> IdentityRoles { get; set; }
4848
public ReadOnlySpan<char> RequiredRoleClaims => "".AsSpan();
4949
}
5050

@@ -69,7 +69,7 @@ await Assert.ThrowsAsync<AuthorizationException>(
6969

7070
public class SecuredRequestWithRequiredRoleClaims : IRequest<int>, ISecuredRequest
7171
{
72-
public IEnumerable<string> IdentityRoles { get; set; } = [];
72+
public IEnumerable<string> IdentityRoles { get; set; }
7373
public ReadOnlySpan<char> RequiredRoleClaims => "admin".AsSpan();
7474
}
7575

@@ -94,7 +94,7 @@ public async Task Handle_ValidRequest_WithRequiredRoleClaims_ReturnsResponse()
9494

9595
public class SecuredRequestWithoutRequiredRoleClaims : IRequest<int>, ISecuredRequest
9696
{
97-
public IEnumerable<string> IdentityRoles { get; set; } = [];
98-
public ReadOnlySpan<char> RequiredRoleClaims => "editor,admin".AsSpan();
97+
public IEnumerable<string> IdentityRoles { get; set; }
98+
public ReadOnlySpan<char> RequiredRoleClaims => "admin".AsSpan();
9999
}
100100
}

0 commit comments

Comments
 (0)