From 3a23cbe192040f55c54cb3bb572d531e6a07a2dd Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Thu, 14 Sep 2023 12:00:20 +1000 Subject: Finished initial implementation of login page --- Controllers/LoginController.cs | 41 +++++++++++++++ Pages/Component/Titlebar.razor | 115 ++++++++++++++++++++++++----------------- Pages/Gallery.razor | 1 + Pages/TagDefinitions.razor | 1 + Pages/Upload.razor | 1 + Pages/ViewMedia.razor | 2 +- Program.cs | 4 +- Properties/launchSettings.json | 1 + Services/GlobalUserService.cs | 7 --- Services/UserService.cs | 42 +-------------- 10 files changed, 117 insertions(+), 98 deletions(-) create mode 100644 Controllers/LoginController.cs delete mode 100644 Services/GlobalUserService.cs diff --git a/Controllers/LoginController.cs b/Controllers/LoginController.cs new file mode 100644 index 0000000..fff3e6e --- /dev/null +++ b/Controllers/LoginController.cs @@ -0,0 +1,41 @@ +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.Cookies; +using Microsoft.AspNetCore.Mvc; +using System.Security.Claims; + +namespace HyperBooru.Controllers; + +[ApiController] +[Route("/")] +public class LoginController : Controller { + private IHttpContextAccessor httpContextAccessor; + public LoginController(IHttpContextAccessor httpContextAccessor) => + this.httpContextAccessor = httpContextAccessor; + + [HttpPost("Login")] + public async Task Login( + [FromForm] string username, + [FromForm] string password) { + + var claims = new Claim[] { + new Claim(ClaimTypes.NameIdentifier, username) + }; + + var claimsIdentity = new ClaimsIdentity( + claims, + CookieAuthenticationDefaults.AuthenticationScheme); + + var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); + + if(username == "admin" && password == "test") { + await httpContextAccessor.HttpContext!.SignInAsync(claimsPrincipal); + return Ok(); + } else { + return StatusCode(403); + } + } + + [HttpPost("Logout")] + public async Task Logout() => + await httpContextAccessor.HttpContext!.SignOutAsync(); +} diff --git a/Pages/Component/Titlebar.razor b/Pages/Component/Titlebar.razor index 71f3bd0..bcd5f61 100644 --- a/Pages/Component/Titlebar.razor +++ b/Pages/Component/Titlebar.razor @@ -1,64 +1,83 @@ @inject IUserService userService @inject NavigationManager navigationManager @inject IJSRuntime jsRuntime +@inject AuthenticationStateProvider authStateProvider -@if(authorized) { -