Skip to content

Commit 5d89557

Browse files
committed
Program.cs refactor
1 parent b78b06b commit 5d89557

20 files changed

+92
-90
lines changed

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Policies/AdminAuthorizationHandler.cs renamed to src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Auth/AdminAuthorizationHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
using Microsoft.AspNetCore.Authorization;
44

5-
namespace Ahk.GradeManagement.Client.Policies;
5+
namespace Ahk.GradeManagement.Client.Auth;
66

77
public class UserTypeAuthorizationHandler(UserClient userClient) : AuthorizationHandler<UserTypeRequirement>
88
{
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using Ahk.GradeManagement.Shared.Enums;
2+
3+
using Microsoft.AspNetCore.Authorization;
4+
5+
namespace Ahk.GradeManagement.Client.Auth;
6+
7+
public static class AuthenticationExtensions
8+
{
9+
public static IServiceCollection AddGradeManagementAuthentication(this IServiceCollection services, IConfiguration configuration)
10+
{
11+
services.AddMsalAuthentication(options =>
12+
{
13+
configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
14+
foreach (var config in configuration.GetSection("AzureAd:DefaultAccessTokenScopes").AsEnumerable())
15+
{
16+
if (!string.IsNullOrWhiteSpace(config.Value) && !options.ProviderOptions.DefaultAccessTokenScopes.Contains(config.Value))
17+
{
18+
options.ProviderOptions.DefaultAccessTokenScopes.Add(config.Value);
19+
}
20+
}
21+
});
22+
services.AddScoped<IAuthorizationHandler, UserTypeAuthorizationHandler>();
23+
services.AddAuthorizationCore(options =>
24+
{
25+
options.AddPolicy(Policy.RequireAdmin, policy => policy.Requirements.Add(new UserTypeRequirement([UserType.Admin])));
26+
options.AddPolicy(Policy.RequireTeacher, policy => policy.Requirements.Add(new UserTypeRequirement([UserType.Teacher, UserType.Admin])));
27+
});
28+
return services;
29+
}
30+
}

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Policies/Policy.cs renamed to src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Auth/Policy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Ahk.GradeManagement.Client.Policies;
1+
namespace Ahk.GradeManagement.Client.Auth;
22

33
public static class Policy
44
{

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Policies/UserTypeRequirement.cs renamed to src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Auth/UserTypeRequirement.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
using Microsoft.AspNetCore.Authorization;
44

5-
namespace Ahk.GradeManagement.Client.Policies;
5+
namespace Ahk.GradeManagement.Client.Auth;
66

77
public class UserTypeRequirement(UserType[] type) : IAuthorizationRequirement
88
{

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Layout/NavMenu.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@using GradeManagement.Client.Policies
1+
@using Ahk.GradeManagement.Client.Auth
22
<MudNavMenu>
33
<MudNavLink Href="/" Match="NavLinkMatch.All">Dashboard</MudNavLink>
44
<AuthorizeView Policy="@Policy.RequireTeacher">
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
namespace Ahk.GradeManagement.Client.Network;
2+
3+
public static class HttpClientExtensions
4+
{
5+
public static IServiceCollection AddGradeManagementHttpClients(this IServiceCollection services, string baseAddress)
6+
{
7+
services.AddTransient<AuthorizationMessageHandler>();
8+
services.AddTransient<ExceptionMessageHandler>();
9+
services.AddTransient<SubjectHeaderHandler>();
10+
11+
services.ConfigureHttpClientDefaults(b => b
12+
.AddHttpMessageHandler<AuthorizationMessageHandler>()
13+
.AddHttpMessageHandler<ExceptionMessageHandler>()
14+
.AddHttpMessageHandler<SubjectHeaderHandler>()
15+
.ConfigureHttpClient(client => client.BaseAddress = new Uri(baseAddress)));
16+
17+
services.AddHttpClient<SubjectClient>();
18+
services.AddHttpClient<CourseClient>();
19+
services.AddHttpClient<SemesterClient>();
20+
services.AddHttpClient<LanguageClient>();
21+
services.AddHttpClient<UserClient>();
22+
services.AddHttpClient<GroupClient>();
23+
services.AddHttpClient<ExerciseClient>();
24+
services.AddHttpClient<AssignmentClient>();
25+
services.AddHttpClient<StudentClient>();
26+
services.AddHttpClient<DashboardClient>();
27+
28+
return services;
29+
}
30+
}

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Network/MockClient.cs

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Pages/Courses.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
@page "/courses"
1+
@page "/courses"
22
@layout AuthenticatedLayout
33

4+
@using Ahk.GradeManagement.Client.Auth
45
@using GradeManagement.Client.Components.NewDialogs
56
@implements IDisposable
67
@inject IDialogService DialogService

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Pages/CreationWizard.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
@page "/wizard"
1+
@page "/wizard"
22
@using System.Text.Json
3+
@using Ahk.GradeManagement.Client.Auth
34
@using GradeManagement.Client.Components.NewDialogs
45
@using GradeManagement.Shared.Dtos.GitHubManifest
56
@using MudExtensions

src/Ahk.GradeManagement/Ahk.GradeManagement.Client/Pages/Languages.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
@page "/languages"
1+
@page "/languages"
2+
@using Ahk.GradeManagement.Client.Auth
23
@using GradeManagement.Client.Components.NewDialogs
34
@layout AuthenticatedLayout
45

0 commit comments

Comments
 (0)