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();
}
}
}