-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAuthorizationModule.cs
More file actions
48 lines (45 loc) · 2.2 KB
/
AuthorizationModule.cs
File metadata and controls
48 lines (45 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using Altafraner.AfraApp.User.Domain.Models;
using Altafraner.Backbone.Abstractions;
using Altafraner.Backbone.CookieAuthentication;
using Altafraner.Backbone.Defaults;
namespace Altafraner.AfraApp.Backbone.Authorization;
/// <summary>
/// A module for handling simple authorization cases
/// </summary>
[DependsOn<ReverseProxyHandlerModule>]
[DependsOn<CookieAuthenticationModule>]
public class AuthorizationModule : IModule
{
/// <inheritdoc />
public void ConfigureServices(IServiceCollection services, IConfiguration config, IHostEnvironment env)
{
services.AddAuthorizationBuilder()
.AddPolicy(AuthorizationPolicies.StudentOnly,
policy => policy.RequireClaim(AfraAppClaimTypes.Role,
nameof(Rolle.Oberstufe), nameof(Rolle.Mittelstufe)))
.AddPolicy(AuthorizationPolicies.MittelStufeStudentOnly,
policy => policy.RequireClaim(AfraAppClaimTypes.Role,
nameof(Rolle.Mittelstufe)))
.AddPolicy(AuthorizationPolicies.TutorOnly,
policy => policy.RequireClaim(AfraAppClaimTypes.Role,
nameof(Rolle.Tutor)))
.AddPolicy(AuthorizationPolicies.Otiumsverantwortlich,
policy => policy.RequireClaim(AfraAppClaimTypes.GlobalPermission,
nameof(GlobalPermission.Otiumsverantwortlich)))
.AddPolicy(AuthorizationPolicies.ProfundumsVerantwortlich,
policy => policy.RequireClaim(AfraAppClaimTypes.GlobalPermission,
nameof(GlobalPermission.Profundumsverantwortlich)))
.AddPolicy(AuthorizationPolicies.AdminOnly,
policy => policy.RequireClaim(AfraAppClaimTypes.GlobalPermission,
nameof(GlobalPermission.Admin)))
.AddPolicy(AuthorizationPolicies.TeacherOrAdmin,
policy => policy.RequireAssertion(context =>
context.User.HasClaim(AfraAppClaimTypes.GlobalPermission, nameof(GlobalPermission.Admin))
|| context.User.HasClaim(AfraAppClaimTypes.Role, nameof(Rolle.Tutor))));
}
/// <inheritdoc />
public void RegisterMiddleware(WebApplication app)
{
app.UseAuthorization();
}
}