Files
icarus/Authorization/Handlers/HasScopeHandler.cs
T
Kun Deng 2cc13ac9bb Code changes
Did not run code. Had a spur of the moment to try something out.
2022-08-25 20:56:12 -04:00

43 lines
1.2 KiB
C#

using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Icarus.Authorization;
namespace Icarus.Authorization.Handlers
{
public class HasScopeHandler : AuthorizationHandler<HasScopeRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, HasScopeRequirement requirement)
{
var issuer = requirement.Issuer;
var scope = requirement.Scope;
var claim = string.Empty;
// if (!context.User.HasClaim(c => c.Type == "scope" && c.Issuer == requirement.Issuer))
if (!context.User.HasClaim(c =>
{
var i = 0;
var b = 99;
claim = c.Type;
return c.Type == "scope";
})
)
{
return Task.CompletedTask;
}
var scopes = context.User.FindFirst(c =>
c.Type == "scope" && c.Issuer == requirement.Issuer).Value.Split(' ');
if (scopes.Any(s => s == requirement.Scope))
{
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}
}