diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-12-21 23:37:23 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-12-21 23:37:23 +0100 |
| commit | 82ade3c31fb17b662feec59e9e654ceb66edbb7a (patch) | |
| tree | 26443c41c55d2cd2ae46fdd0d663aca84b779ffe /code/api/Endpoints/Account/CreateEndpoint.cs | |
| parent | e60703aadca7d423c0fbfb189d5ef439fc1df072 (diff) | |
| download | storage-82ade3c31fb17b662feec59e9e654ceb66edbb7a.tar.xz storage-82ade3c31fb17b662feec59e9e654ceb66edbb7a.zip | |
feat: Add initial schema and start login
Diffstat (limited to 'code/api/Endpoints/Account/CreateEndpoint.cs')
| -rw-r--r-- | code/api/Endpoints/Account/CreateEndpoint.cs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/code/api/Endpoints/Account/CreateEndpoint.cs b/code/api/Endpoints/Account/CreateEndpoint.cs new file mode 100644 index 0000000..41ffe96 --- /dev/null +++ b/code/api/Endpoints/Account/CreateEndpoint.cs @@ -0,0 +1,52 @@ +namespace I2R.Storage.Api.Endpoints.Account; + +public class CreateEndpoint : Base +{ + private readonly AppDatabase _database; + private readonly UserService _userService; + private readonly IStringLocalizer<SharedResources> _localizer; + + public CreateEndpoint(AppDatabase database, UserService userService, IStringLocalizer<SharedResources> localizer) { + _database = database; + _userService = userService; + _localizer = 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 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 |
