Files
Caspian.Elsa.Core/src/common/Elsa.Api.Common/Requirements/LocalHostRequirement.cs
T
2025-08-18 17:11:43 +03:30

36 lines
1.1 KiB
C#

using Elsa.Extensions;
using JetBrains.Annotations;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
namespace Elsa.Requirements;
/// <summary>
/// Represents an authorization requirement for localhost requests, meaning that if a request comes from the localhost, the requirement is met.
/// </summary>
public class LocalHostRequirement : IAuthorizationRequirement
{
}
/// <inheritdoc />
[PublicAPI]
public class LocalHostRequirementHandler : AuthorizationHandler<LocalHostRequirement>
{
private readonly IHttpContextAccessor _httpContextAccessor;
/// <inheritdoc />
public LocalHostRequirementHandler(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
/// <inheritdoc />
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, LocalHostRequirement requirement)
{
if (_httpContextAccessor.HttpContext?.Request.IsLocal() == false)
context.Fail(new AuthorizationFailureReason(this, "Only requests from localhost are allowed"));
context.Succeed(requirement);
return Task.CompletedTask;
}
}