using Extensions;
using Microsoft.AspNetCore.Authorization;
using WeatherForecast.Services;
namespace WeatherForecast.Policies {
///
///
///
public class WhitelistTokenRequirement : IAuthorizationRequirement {
// public string WhiteListToken { get; }
///
///
///
public WhitelistTokenRequirement() {
// WhiteListToken = whiteListToken;
}
}
///
///
///
public class WhitelistTokenHandler : AuthorizationHandler {
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IAuthenticationService _athenticationService;
///
///
///
///
///
public WhitelistTokenHandler(
IHttpContextAccessor httpContextAccessor,
IAuthenticationService athenticationService
) {
_httpContextAccessor = httpContextAccessor;
_athenticationService = athenticationService;
}
///
///
///
///
///
///
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, WhitelistTokenRequirement requirement) {
var request = _httpContextAccessor?.HttpContext?.Request;
if (request != null && _athenticationService.Get(request.GeBearerToken()).IsSuccess)
context.Succeed(requirement);
return Task.CompletedTask;
}
}
}