Files
SocialPub/PrivaPub/Extensions/Extensions.cs
T

48 lines
1.7 KiB
C#
Raw Permalink Normal View History

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)
{
if (claimsPrincipal.FindFirstValue(Policies.IsAdmin) == "true")
2023-02-18 08:52:17 +01:00
return UserPolicyType.IsAdmin;
if (claimsPrincipal.FindFirstValue(Policies.IsModerator) == "true")
2023-02-18 08:52:17 +01:00
return UserPolicyType.IsModerator;
return UserPolicyType.IsUser;
}
}
}