You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
795 B
26 lines
795 B
using System.Net;
|
|
using Exsersewo.Common.Utilities;
|
|
using Kynareth.Helpers;
|
|
using Microsoft.AspNetCore.Mvc.Filters;
|
|
|
|
namespace Kynareth.Attributes;
|
|
|
|
[AttributeUsage(AttributeTargets.Class)]
|
|
public class RequireTokenAttribute : ActionFilterAttribute
|
|
{
|
|
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
|
|
{
|
|
if (await RequestHelper.IsRequestAuthenticatedAsync(context.HttpContext.Request))
|
|
{
|
|
await next();
|
|
return;
|
|
}
|
|
|
|
context.HttpContext.Response.ContentType = "application/json";
|
|
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
|
|
|
|
var invalidRequest = EventResult.FromFailure("Unauthorized request");
|
|
await context.HttpContext.Response.WriteAsync(invalidRequest.ToJson());
|
|
return;
|
|
}
|
|
} |