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