diff options
| author | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
|---|---|---|
| committer | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
| commit | 5f604b3052dab1d51dc130df2470bf330b283ec6 (patch) | |
| tree | ae00e1fe4542850467555b4e3af41964ba8d878b /code/api/Endpoints/Account | |
| parent | 63cf177e8cf22e349534664d59a6926f8b36863d (diff) | |
| download | storage-5f604b3052dab1d51dc130df2470bf330b283ec6.tar.xz storage-5f604b3052dab1d51dc130df2470bf330b283ec6.zip | |
Max lenghts on db schema
Use latest temporal from cdn
Implement majority of translation functionality
Major refinements/bugs
Diffstat (limited to 'code/api/Endpoints/Account')
| -rw-r--r-- | code/api/Endpoints/Account/CreateEndpoint.cs | 84 | ||||
| -rw-r--r-- | code/api/Endpoints/Account/DeleteEndpoint.cs | 24 | ||||
| -rw-r--r-- | code/api/Endpoints/Account/LoginEndpoint.cs | 52 | ||||
| -rw-r--r-- | code/api/Endpoints/Account/LogoutEndpoint.cs | 14 |
4 files changed, 71 insertions, 103 deletions
diff --git a/code/api/Endpoints/Account/CreateEndpoint.cs b/code/api/Endpoints/Account/CreateEndpoint.cs index 4cea8f1..59d954c 100644 --- a/code/api/Endpoints/Account/CreateEndpoint.cs +++ b/code/api/Endpoints/Account/CreateEndpoint.cs @@ -1,52 +1,42 @@ -namespace I2R.Storage.Api.Endpoints.Account; +namespace Quality.Storage.Api.Endpoints.Account; -public class CreateEndpoint : EndpointBase +public class CreateEndpoint(AppDatabase database, UserService userService, IStringLocalizer<SharedResources> localizer) : EndpointBase { - private readonly AppDatabase _database; - private readonly UserService _userService; - private readonly IStringLocalizer<SharedResources> _localizer; + public new class Request + { + public string Username { get; set; } + public string Password { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + } - public CreateEndpoint(AppDatabase database, UserService userService, IStringLocalizer<SharedResources> localizer) { - _database = database; - _userService = userService; - _localizer = localizer; - } + public new class Response + { + public Guid Id { get; set; } + public string Username { get; set; } + public UserRole Role { get; set; } + } - public new class Request - { - public string Username { get; set; } - public string Password { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - } + [AllowAnonymous] + [HttpPost("~/account/create")] + public ActionResult Handle([FromBody] Request request) { + if (!userService.CanCreateAccount(request.Username)) { + return BadRequest(localizer["That username is already taken"]); + } - public new class Response - { - public Guid Id { get; set; } - public string Username { get; set; } - public EUserRole Role { get; set; } - } - - [AllowAnonymous] - [HttpPost("~/account/create")] - public ActionResult Handle([FromBody] Request request) { - if (!_userService.CanCreateAccount(request.Username)) { - return BadRequest(_localizer["That username is already taken"]); - } - - var user = new User() { - Username = request.Username, - Password = PasswordHelper.HashPassword(request.Password), - LastName = request.LastName, - FirstName = request.FirstName, - Role = EUserRole.LEAST_PRIVILEGED, - }; - _database.Users.Add(user); - _database.SaveChanges(); - return Ok(new Response { - Id = user.Id, - Username = user.Username, - Role = user.Role - }); - } -}
\ No newline at end of file + var user = new User { + Username = request.Username, + Password = PasswordHelper.HashPassword(request.Password), + LastName = request.LastName, + FirstName = request.FirstName, + Role = UserRole.LEAST_PRIVILEGED, + }; + database.Users.Add(user); + database.SaveChanges(); + return Ok(new Response { + Id = user.Id, + Username = user.Username, + Role = user.Role + }); + } +} diff --git a/code/api/Endpoints/Account/DeleteEndpoint.cs b/code/api/Endpoints/Account/DeleteEndpoint.cs index 75a508a..daf55f2 100644 --- a/code/api/Endpoints/Account/DeleteEndpoint.cs +++ b/code/api/Endpoints/Account/DeleteEndpoint.cs @@ -1,17 +1,11 @@ -namespace I2R.Storage.Api.Endpoints.Account; +namespace Quality.Storage.Api.Endpoints.Account; -public class DeleteEndpoint : EndpointBase +public class DeleteEndpoint(UserService userService) : EndpointBase { - private readonly UserService _userService; - - public DeleteEndpoint(UserService userService) { - _userService = userService; - } - - [HttpDelete("~/account/delete")] - public async Task<ActionResult> Handle() { - await _userService.MarkUserAsDeletedAsync(LoggedInUser.Id, LoggedInUser.Id); - await _userService.LogOutUserAsync(HttpContext); - return Ok(); - } -}
\ No newline at end of file + [HttpDelete("~/account/delete")] + public async Task<ActionResult> Handle() { + await userService.MarkUserAsDeletedAsync(LoggedInUser.Id, LoggedInUser.Id); + await userService.LogOutUserAsync(HttpContext); + return Ok(); + } +} diff --git a/code/api/Endpoints/Account/LoginEndpoint.cs b/code/api/Endpoints/Account/LoginEndpoint.cs index 4f8e434..6cda119 100644 --- a/code/api/Endpoints/Account/LoginEndpoint.cs +++ b/code/api/Endpoints/Account/LoginEndpoint.cs @@ -1,36 +1,26 @@ -namespace I2R.Storage.Api.Endpoints.Account; +namespace Quality.Storage.Api.Endpoints.Account; -public class LoginEndpoint : EndpointBase +public class LoginEndpoint(UserService userService, AppDatabase database, IStringLocalizer<SharedResources> localizer) : EndpointBase { - private readonly AppDatabase _database; - private readonly UserService _userService; - private readonly IStringLocalizer<SharedResources> _localizer; + public new class Request + { + public string Username { get; set; } + public string Password { get; set; } + } - public new class Request - { - public string Username { get; set; } - public string Password { get; set; } - } + [AllowAnonymous] + [HttpPost("~/account/login")] + public async Task<ActionResult> Handle([FromBody] Request request) { + var user = database.Users.FirstOrDefault(c => c.Username == request.Username); + if (user == default) { + return KnownProblem(localizer["Invalid username or password"]); + } - public LoginEndpoint(UserService userService, AppDatabase database, IStringLocalizer<SharedResources> localizer) { - _userService = userService; - _database = database; - _localizer = localizer; - } + if (!PasswordHelper.Verify(request.Password, user.Password)) { + return KnownProblem(localizer["Invalid username or password"]); + } - [AllowAnonymous] - [HttpPost("~/account/login")] - public async Task<ActionResult> Handle([FromBody] Request request) { - var user = _database.Users.FirstOrDefault(c => c.Username == request.Username); - if (user == default) { - return KnownProblem(_localizer["Invalid username or password"]); - } - - if (!PasswordHelper.Verify(request.Password, user.Password)) { - return KnownProblem(_localizer["Invalid username or password"]); - } - - await _userService.LogInUserAsync(HttpContext, user.DefaultClaims()); - return Ok(); - } -}
\ No newline at end of file + await userService.LogInUserAsync(HttpContext, user.DefaultClaims()); + return Ok(); + } +} diff --git a/code/api/Endpoints/Account/LogoutEndpoint.cs b/code/api/Endpoints/Account/LogoutEndpoint.cs index de03e8e..b392dbd 100644 --- a/code/api/Endpoints/Account/LogoutEndpoint.cs +++ b/code/api/Endpoints/Account/LogoutEndpoint.cs @@ -1,16 +1,10 @@ -namespace I2R.Storage.Api.Endpoints.Account; +namespace Quality.Storage.Api.Endpoints.Account; -public class LogoutEndpoint : EndpointBase +public class LogoutEndpoint(UserService userService) : EndpointBase { - private readonly UserService _userService; - - public LogoutEndpoint(UserService userService) { - _userService = userService; - } - - [HttpGet("~/account/logout")] + [HttpGet("~/account/logout")] public async Task<ActionResult> Handle() { - await _userService.LogOutUserAsync(HttpContext); + await userService.LogOutUserAsync(HttpContext); return Ok(); } }
\ No newline at end of file |
