mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using System.Linq;
|
|
using System.Security.Claims;
|
|
using System.Threading.Tasks;
|
|
using IdentityServer4.Extensions;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
namespace Kyoo.Authentication
|
|
{
|
|
public class AuthorizationValidatorHandler : AuthorizationHandler<AuthorizationValidator>
|
|
{
|
|
private readonly IConfiguration _configuration;
|
|
|
|
public AuthorizationValidatorHandler(IConfiguration configuration)
|
|
{
|
|
_configuration = configuration;
|
|
}
|
|
|
|
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AuthorizationValidator requirement)
|
|
{
|
|
if (!context.User.IsAuthenticated())
|
|
{
|
|
string defaultPerms = _configuration.GetValue<string>("defaultPermissions");
|
|
if (defaultPerms.Split(',').Contains(requirement.Permission.ToLower()))
|
|
context.Succeed(requirement);
|
|
}
|
|
else
|
|
{
|
|
Claim perms = context.User.Claims.FirstOrDefault(x => x.Type == "permissions");
|
|
if (perms != null && perms.Value.Split(",").Contains(requirement.Permission.ToLower()))
|
|
context.Succeed(requirement);
|
|
}
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|
|
} |