2026-10-01 08:05:56 +02:00
|
|
|
using Microsoft.AspNetCore.Authorization;
|
2023-02-18 08:52:17 +01:00
|
|
|
|
|
|
|
|
|
2023-02-19 00:43:43 +01:00
|
|
|
using PrivaPub.ClientModels;
|
2023-02-18 08:52:17 +01:00
|
|
|
|
2023-02-19 00:43:43 +01:00
|
|
|
using PrivaPub.Models.User;
|
2023-02-18 08:52:17 +01:00
|
|
|
using System.Security.Claims;
|
|
|
|
|
|
2023-02-19 00:43:43 +01:00
|
|
|
namespace PrivaPub.Extensions
|
2023-02-18 08:52:17 +01:00
|
|
|
{
|
|
|
|
|
public static class Extensions
|
|
|
|
|
{
|
|
|
|
|
public static AuthorizationPolicy IsAdminPolicy() =>
|
|
|
|
|
new AuthorizationPolicyBuilder().RequireAuthenticatedUser()
|
|
|
|
|
.RequireClaim(Policies.IsAdmin, true.ToString().ToLower())
|
|
|
|
|
.RequireClaim(Policies.IsUser, true.ToString().ToLower())
|
|
|
|
|
.RequireClaim(Policies.IsModerator, true.ToString().ToLower())
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
|
public static AuthorizationPolicy IsUserPolicy() =>
|
|
|
|
|
new AuthorizationPolicyBuilder().RequireAuthenticatedUser()
|
|
|
|
|
.RequireClaim(Policies.IsUser, true.ToString().ToLower())
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
|
public static AuthorizationPolicy IsModeratorPolicy() =>
|
|
|
|
|
new AuthorizationPolicyBuilder().RequireAuthenticatedUser()
|
|
|
|
|
.RequireClaim(Policies.IsUser, true.ToString().ToLower())
|
|
|
|
|
.RequireClaim(Policies.IsModerator, true.ToString().ToLower())
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
|
public static string GetHostWithPath(this HttpContext httpContext) =>
|
|
|
|
|
$"https://{httpContext.Request.Host}{httpContext.Request.Path}";
|
|
|
|
|
|
|
|
|
|
public static string GetHost(this HttpContext httpContext) =>
|
|
|
|
|
$"https://{httpContext.Request.Host}";
|
|
|
|
|
|
|
|
|
|
public static UserPolicyType GetHighestPolicy(this ClaimsPrincipal claimsPrincipal)
|
|
|
|
|
{
|
2026-10-01 08:05:56 +02:00
|
|
|
if (claimsPrincipal.FindFirstValue(Policies.IsAdmin) == "true")
|
2023-02-18 08:52:17 +01:00
|
|
|
return UserPolicyType.IsAdmin;
|
|
|
|
|
|
2026-10-01 08:05:56 +02:00
|
|
|
if (claimsPrincipal.FindFirstValue(Policies.IsModerator) == "true")
|
2023-02-18 08:52:17 +01:00
|
|
|
return UserPolicyType.IsModerator;
|
|
|
|
|
|
|
|
|
|
return UserPolicyType.IsUser;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|