slik-dispenser/backend/Middleware/ParentMiddleware.cs
2023-12-19 00:50:46 +01:00

50 lines
1.1 KiB
C#

using backend.Application;
namespace backend.Middleware;
public class ParentMiddleware
{
private readonly RequestDelegate _next;
public ParentMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
if (context.Request.Cookies["session"] == null) {
context.Response.Clear();
context.Response.StatusCode = 401;
await context.Response.WriteAsync("You are not logged in");
return;
}
var user = ApplicationState.DbContext!.Users.FirstOrDefault(user => user.SessionToken == context.Request.Cookies["session"]!.ToString());
if (user == null) {
context.Response.Clear();
context.Response.StatusCode = 401;
await context.Response.WriteAsync("Invalid session token");
return;
}
if (!user.IsParent) {
context.Response.Clear();
context.Response.StatusCode = 403;
await context.Response.WriteAsync("You are not a parent");
return;
}
await _next(context);
}
}
public class ParentMiddlewareBuilder
{
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<ParentMiddleware>();
}
}