Skip to content

Commit 940075f

Browse files
committed
minor refactor
1 parent e4be33d commit 940075f

File tree

21 files changed

+73
-112
lines changed

21 files changed

+73
-112
lines changed

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Authorization/AuthorizationCollectionExtensions.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ public static void AddPolicies(this IServiceCollection services)
1212
{
1313
services.AddAuthorizationBuilder()
1414
.AddPolicy(AdminRequirement.PolicyName, policy => policy.Requirements.Add(new AdminRequirement()));
15+
1516
services.AddAuthorizationBuilder()
16-
.AddPolicy(DemonstratorOnSubjectRequirement.PolicyName,
17-
policy => policy.Requirements.Add(new DemonstratorOnSubjectRequirement()));
17+
.AddPolicy(DemonstratorOnSubjectRequirement.PolicyName, policy => policy.Requirements.Add(new DemonstratorOnSubjectRequirement()));
18+
1819
services.AddAuthorizationBuilder()
19-
.AddPolicy(TeacherOnSubjectRequirement.PolicyName,
20-
policy => policy.Requirements.Add(new TeacherOnSubjectRequirement()));
20+
.AddPolicy(TeacherOnSubjectRequirement.PolicyName, policy => policy.Requirements.Add(new TeacherOnSubjectRequirement()));
21+
2122
services.AddAuthorizationBuilder()
2223
.AddPolicy(TeacherRequirement.PolicyName, policy => policy.Requirements.Add(new TeacherRequirement()));
24+
2325
services.AddAuthorizationBuilder()
2426
.AddPolicy(UserRequirement.PolicyName, policy => policy.Requirements.Add(new UserRequirement()));
2527
}

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Authorization/Handlers/AdminRequirementHandler.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ namespace Ahk.GradeManagement.Api.Authorization.Handlers;
66

77
public class AdminRequirementHandler : AuthorizationHandler<AdminRequirement>
88
{
9-
protected override Task HandleRequirementAsync(
10-
AuthorizationHandlerContext context, AdminRequirement requirement)
9+
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AdminRequirement requirement)
1110
{
12-
if (AdminRoleChecker.CheckAdminRole(context, requirement))
11+
if (context.User.IsInAdminRole())
1312
{
1413
context.Succeed(requirement);
1514
return Task.CompletedTask;

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Authorization/Handlers/AdminRoleChecker.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
using Ahk.GradeManagement.Shared.Enums;
22

3-
using Microsoft.AspNetCore.Authorization;
3+
using System.Security.Claims;
44

55
namespace Ahk.GradeManagement.Api.Authorization.Handlers;
66

77
public static class AdminRoleChecker
88
{
9-
public static bool CheckAdminRole(AuthorizationHandlerContext context, IAuthorizationRequirement requirement)
9+
public static bool IsInAdminRole(this ClaimsPrincipal user)
1010
{
11-
var roleClaim = context.User.FindFirst(CustomClaimTypes.UserRole);
11+
var roleClaim = user.FindFirst(CustomClaimTypes.UserRole);
1212
if (roleClaim == null || roleClaim.Value != UserType.Admin.ToString())
1313
return false;
1414

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Authorization/Handlers/DemonstratorOnSubjectRequirementHandler.cs

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33

44
using Microsoft.AspNetCore.Authorization;
55

6+
using System.Globalization;
7+
68
namespace Ahk.GradeManagement.Api.Authorization.Handlers;
79

810
public class DemonstratorOnSubjectRequirementHandler(IHttpContextAccessor httpContextAccessor)
911
: AuthorizationHandler<DemonstratorOnSubjectRequirement>
1012
{
11-
protected override Task HandleRequirementAsync(
12-
AuthorizationHandlerContext context, DemonstratorOnSubjectRequirement requirement)
13+
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, DemonstratorOnSubjectRequirement requirement)
1314
{
1415
var httpContext = httpContextAccessor.HttpContext;
1516
if (httpContext == null)
@@ -18,26 +19,24 @@ protected override Task HandleRequirementAsync(
1819
return Task.CompletedTask;
1920
}
2021

21-
if (AdminRoleChecker.CheckAdminRole(context, requirement))
22+
if (context.User.IsInAdminRole())
2223
{
2324
context.Succeed(requirement);
2425
return Task.CompletedTask;
2526
}
2627

27-
if (httpContext.Request.Headers.TryGetValue("X-Subject-Id-Value", out var subjectIdHeader))
28+
if (httpContext.Request.Headers.TryGetValue("X-Subject-Id-Value", out var subjectIdHeader)
29+
&& long.TryParse(subjectIdHeader, out var subjectId))
2830
{
29-
if (long.TryParse(subjectIdHeader, out var subjectId))
31+
var subjectAccessClaims = context.User.FindAll(CustomClaimTypes.SubjectAccess).Select(c => c.Value).ToList();
32+
var roleOnSubjectClaim = context.User.FindFirst($"{CustomClaimTypes.AccessLevel}_{subjectId}");
33+
34+
if (subjectAccessClaims.Contains(subjectId.ToString(CultureInfo.InvariantCulture))
35+
&& roleOnSubjectClaim != null
36+
&& (roleOnSubjectClaim.Value == UserRoleOnSubject.Demonstrator.ToString() || roleOnSubjectClaim.Value == UserRoleOnSubject.Teacher.ToString()))
3037
{
31-
var subjectAccessClaims =
32-
context.User.FindAll(CustomClaimTypes.SubjectAccess).Select(c => c.Value).ToList();
33-
var roleOnSubjectClaim = context.User.FindFirst($"{CustomClaimTypes.AccessLevel}_{subjectId}");
34-
if (subjectAccessClaims.Contains(subjectId.ToString()) && roleOnSubjectClaim != null &&
35-
(roleOnSubjectClaim.Value == UserRoleOnSubject.Demonstrator.ToString() ||
36-
roleOnSubjectClaim.Value == UserRoleOnSubject.Teacher.ToString()))
37-
{
38-
context.Succeed(requirement);
39-
return Task.CompletedTask;
40-
}
38+
context.Succeed(requirement);
39+
return Task.CompletedTask;
4140
}
4241
}
4342

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Authorization/Handlers/TeacherOnSubjectRequirementHandler.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33

44
using Microsoft.AspNetCore.Authorization;
55

6+
using System.Globalization;
7+
68
namespace Ahk.GradeManagement.Api.Authorization.Handlers;
79

810
public class TeacherOnSubjectRequirementHandler(IHttpContextAccessor httpContextAccessor)
911
: AuthorizationHandler<TeacherOnSubjectRequirement>
1012
{
11-
protected override Task HandleRequirementAsync(
12-
AuthorizationHandlerContext context, TeacherOnSubjectRequirement requirement)
13+
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, TeacherOnSubjectRequirement requirement)
1314
{
1415
var httpContext = httpContextAccessor.HttpContext;
1516
if (httpContext == null)
@@ -18,25 +19,24 @@ protected override Task HandleRequirementAsync(
1819
return Task.CompletedTask;
1920
}
2021

21-
if (AdminRoleChecker.CheckAdminRole(context, requirement))
22+
if (context.User.IsInAdminRole())
2223
{
2324
context.Succeed(requirement);
2425
return Task.CompletedTask;
2526
}
2627

27-
if (httpContext.Request.Headers.TryGetValue("X-Subject-Id-Value", out var subjectIdHeader))
28+
if (httpContext.Request.Headers.TryGetValue("X-Subject-Id-Value", out var subjectIdHeader)
29+
&& long.TryParse(subjectIdHeader, out var subjectId))
2830
{
29-
if (long.TryParse(subjectIdHeader, out var subjectId))
31+
var subjectAccessClaims = context.User.FindAll(CustomClaimTypes.SubjectAccess).Select(c => c.Value).ToList();
32+
var roleOnSubjectClaim = context.User.FindFirst($"{CustomClaimTypes.AccessLevel}_{subjectId}");
33+
34+
if (subjectAccessClaims.Contains(subjectId.ToString(CultureInfo.InvariantCulture))
35+
&& roleOnSubjectClaim != null
36+
&& roleOnSubjectClaim.Value == UserRoleOnSubject.Teacher.ToString())
3037
{
31-
var subjectAccessClaims =
32-
context.User.FindAll(CustomClaimTypes.SubjectAccess).Select(c => c.Value).ToList();
33-
var roleOnSubjectClaim = context.User.FindFirst($"{CustomClaimTypes.AccessLevel}_{subjectId}");
34-
if (subjectAccessClaims.Contains(subjectId.ToString()) && roleOnSubjectClaim != null &&
35-
roleOnSubjectClaim.Value == UserRoleOnSubject.Teacher.ToString())
36-
{
37-
context.Succeed(requirement);
38-
return Task.CompletedTask;
39-
}
38+
context.Succeed(requirement);
39+
return Task.CompletedTask;
4040
}
4141
}
4242

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Authorization/Handlers/TeacherRequirementHandler.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ namespace Ahk.GradeManagement.Api.Authorization.Handlers;
77

88
public class TeacherRequirementHandler : AuthorizationHandler<TeacherRequirement>
99
{
10-
protected override Task HandleRequirementAsync(
11-
AuthorizationHandlerContext context, TeacherRequirement requirement)
10+
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, TeacherRequirement requirement)
1211
{
13-
if (AdminRoleChecker.CheckAdminRole(context, requirement))
12+
if (context.User.IsInAdminRole())
1413
{
1514
context.Succeed(requirement);
1615
return Task.CompletedTask;

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Authorization/Handlers/UserRequirementHandler.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ namespace Ahk.GradeManagement.Api.Authorization.Handlers;
77

88
public class UserRequirementHandler : AuthorizationHandler<UserRequirement>
99
{
10-
protected override Task HandleRequirementAsync(
11-
AuthorizationHandlerContext context, UserRequirement requirement)
10+
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, UserRequirement requirement)
1211
{
13-
if (AdminRoleChecker.CheckAdminRole(context, requirement))
12+
if (context.User.IsInAdminRole())
1413
{
1514
context.Succeed(requirement);
1615
return Task.CompletedTask;

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Controllers/AssingmentEventTestController.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ namespace Ahk.GradeManagement.Api.Controllers;
1010
[ApiController]
1111
[Route("api/testassignmentevents")]
1212
[Authorize(Policy = AdminRequirement.PolicyName)]
13-
public class AssingmentEventTestController(
14-
AssignmentEventProcessorService assignmentEventProcessorService,
15-
IWebHostEnvironment environment)
13+
public class AssingmentEventTestController(AssignmentEventProcessorService assignmentEventProcessorService, IWebHostEnvironment environment)
1614
: ControllerBase
1715
{
1816
[HttpPost("assignmentaccepted")]

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Controllers/GitHubAppController.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
using Azure.Identity;
44
using Azure.Security.KeyVault.Secrets;
55

6-
using GradeManagement.Data;
7-
86
using Microsoft.AspNetCore.Mvc;
97

108
using System.Net.Http.Headers;

src/Ahk.GradeManagement/Ahk.GradeManagement.Api/Controllers/UserController.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
using Microsoft.AspNetCore.Authorization;
88
using Microsoft.AspNetCore.Mvc;
99

10-
using System.Security.Claims;
11-
1210
namespace Ahk.GradeManagement.Api.Controllers;
1311

1412
[Authorize]

0 commit comments

Comments
 (0)