diff --git a/Endpoint/Common/Attributes/TokenAuthenticationAttribute.cs b/Endpoint/Common/Attributes/TokenAuthenticationAttribute.cs new file mode 100644 index 0000000..81812bf --- /dev/null +++ b/Endpoint/Common/Attributes/TokenAuthenticationAttribute.cs @@ -0,0 +1,27 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.DependencyInjection; +using Mirea.Api.Endpoint.Common.Interfaces; +using System; + +namespace Mirea.Api.Endpoint.Common.Attributes; + +[AttributeUsage(AttributeTargets.Method)] +public class TokenAuthenticationAttribute : Attribute, IActionFilter +{ + public void OnActionExecuting(ActionExecutingContext context) + { + var setupToken = context.HttpContext.RequestServices.GetRequiredService(); + if (!context.HttpContext.Request.Cookies.TryGetValue("AuthToken", out string? tokenFromCookie)) + { + context.Result = new UnauthorizedResult(); + return; + } + + if (setupToken.MatchToken(Convert.FromBase64String(tokenFromCookie))) return; + + context.Result = new UnauthorizedResult(); + } + + public void OnActionExecuted(ActionExecutedContext context) { } +} \ No newline at end of file