WIP list children
This commit is contained in:
parent
f0c1fe2457
commit
ced67bfe43
@ -125,4 +125,18 @@ public class UserController : ControllerBase
|
|||||||
|
|
||||||
return new JsonResult(data);
|
return new JsonResult(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("Children")]
|
||||||
|
[MiddlewareFilter(typeof(ParentMiddlewareBuilder))]
|
||||||
|
public IActionResult ListChildren()
|
||||||
|
{
|
||||||
|
var users = ApplicationState.DbContext!.Users
|
||||||
|
.Where(user => !user.IsParent)
|
||||||
|
.Select(user => new {
|
||||||
|
username => user.Username,
|
||||||
|
dispenses = user.Dispenses,
|
||||||
|
});
|
||||||
|
|
||||||
|
return new JsonResult(users);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
49
backend/Middleware/ParentMiddleware.cs
Normal file
49
backend/Middleware/ParentMiddleware.cs
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
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>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user