Authinator/Pages/Admin.cshtml.cs
2023-06-01 06:14:24 +02:00

41 lines
1.1 KiB
C#

using Authinator.Backend.Database;
using Authinator.Backend.Database.Tables;
using Authinator.Backend.Utils;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace Authinator.Pages;
public class AdminModel : PageModel {
public IActionResult OnGet() {
var db = new DatabaseContext();
if (!Request.HttpContext.IsAdmin(db))
return StatusCode(StatusCodes.Status403Forbidden);
return Page();
}
public async Task<IActionResult> OnPost() {
var db = new DatabaseContext();
if (!Request.HttpContext.IsAdmin(db))
return StatusCode(StatusCodes.Status403Forbidden);
if (Request.Form["action"] == "add_user") {
await db.Users.AddAsync(new User { Reference = Request.Form["reference"]! });
await db.SaveChangesAsync();
}
if (Request.Form["action"] == "add_group") {
await db.Groups.AddAsync(new Group { Name = Request.Form["name"]! });
await db.SaveChangesAsync();
}
if (Request.Form["action"] == "add_acl") {
await db.ACLs.AddAsync(new ACL { Name = Request.Form["name"]!, Target = Request.Form["target"]! });
await db.SaveChangesAsync();
}
return Redirect("/Admin");
}
}