1
0
mirror of https://github.com/CyberL1/MyMcRealms.git synced 2024-11-14 10:28:21 -05:00
MyMcRealms/Minecraft-Realms-Emulator/Middlewares/MinecraftCookieMiddleware.cs

35 lines
1.1 KiB
C#
Raw Normal View History

2024-04-20 03:20:30 -04:00
using Minecraft_Realms_Emulator.Attributes;
using System.Text;
namespace Minecraft_Realms_Emulator.Middlewares
{
public class MinecraftCookieMiddleware(RequestDelegate next)
{
private readonly RequestDelegate _next = next;
public async Task Invoke(HttpContext httpContext)
{
var endpoint = httpContext.GetEndpoint();
var attribute = endpoint?.Metadata.GetMetadata<RequireMinecraftCookieAttribute>();
if (attribute == null)
{
await _next(httpContext);
return;
}
if (httpContext.Request.Headers.Cookie.ToString() == "")
{
httpContext.Response.StatusCode = 401;
await httpContext.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("Authorization required"));
return;
}
string cookie = httpContext.Request.Headers.Cookie.ToString();
if (!attribute.HasMinecraftCookie(cookie)) throw new UnauthorizedAccessException("Malformed cookie header");
await _next(httpContext);
}
}
}