From 82ade3c31fb17b662feec59e9e654ceb66edbb7a Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Wed, 21 Dec 2022 23:37:23 +0100 Subject: feat: Add initial schema and start login --- code/api/Endpoints/Account/LoginEndpoint.cs | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 code/api/Endpoints/Account/LoginEndpoint.cs (limited to 'code/api/Endpoints/Account/LoginEndpoint.cs') diff --git a/code/api/Endpoints/Account/LoginEndpoint.cs b/code/api/Endpoints/Account/LoginEndpoint.cs new file mode 100644 index 0000000..0ffed0f --- /dev/null +++ b/code/api/Endpoints/Account/LoginEndpoint.cs @@ -0,0 +1,38 @@ +using I2R.Storage.Api.Endpoints._Root; + +namespace I2R.Storage.Api.Endpoints.Account; + +public class LoginEndpoint : Base +{ + private readonly AppDatabase _database; + private readonly UserService _userService; + private readonly IStringLocalizer _localizer; + + public new class Request + { + public string Username { get; set; } + public string Password { get; set; } + } + + public LoginEndpoint(UserService userService, AppDatabase database, IStringLocalizer localizer) { + _userService = userService; + _database = database; + _localizer = localizer; + } + + [AllowAnonymous] + [HttpPost("~/account/login")] + public async Task Handle([FromBody] Request request) { + var user = _database.Users.FirstOrDefault(c => c.Username == request.Username); + if (user == default) { + return BadRequest(_localizer["Invalid username or password"]); + } + + if (!PasswordHelper.Verify(request.Password, user.Password)) { + return BadRequest(_localizer["Invalid username or password"]); + } + + await _userService.LogInUserAsync(HttpContext, user.DefaultClaims()); + return Ok(); + } +} \ No newline at end of file -- cgit v1.3