39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
using gehGassi.Core.Interfaces;
|
|
using gehGassi.Web.Auth.Requirements;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Http;
|
|
using System.Threading.Tasks;
|
|
using System;
|
|
|
|
namespace gehGassi.Web.Auth.AuthorizationHandlers
|
|
{
|
|
public class HasHeaderHandler : AuthorizationHandler<HasHeaderRequirement>
|
|
{
|
|
readonly IHttpContextAccessor _httpContextAccessor = null;
|
|
|
|
public HasHeaderHandler(IHttpContextAccessor httpContextAccessor)
|
|
{
|
|
_httpContextAccessor = httpContextAccessor;
|
|
}
|
|
|
|
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, HasHeaderRequirement requirement)
|
|
{
|
|
if (_httpContextAccessor.HttpContext != null)
|
|
{
|
|
if (_httpContextAccessor.HttpContext.Request.Headers.ContainsKey(requirement.HeaderName))
|
|
{
|
|
var headerValue = _httpContextAccessor.HttpContext.Request.Headers[requirement.HeaderName];
|
|
if (headerValue == requirement.HeaderValue)
|
|
{
|
|
context.Succeed(requirement);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
await Task.Delay(1);
|
|
context.Fail();
|
|
}
|
|
}
|
|
}
|