diff options
| author | Jake Mannens <jake@asger.xyz> | 2026-05-22 00:52:16 +1000 |
|---|---|---|
| committer | Jake Mannens <jake@asger.xyz> | 2026-05-23 22:22:55 +1000 |
| commit | 12eaa5814ef20b0910e8d64a753378b6f6797989 (patch) | |
| tree | 062cf477c29054e0f089cb80f0cd79a9f3b7ccd9 /Controllers/ApiUserController.cs | |
| parent | 6de5d7f5364fe1d54703da6d6b7cb08ea26e939f (diff) | |
Initial commitwasm-initial
Diffstat (limited to 'Controllers/ApiUserController.cs')
| -rw-r--r-- | Controllers/ApiUserController.cs | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/Controllers/ApiUserController.cs b/Controllers/ApiUserController.cs deleted file mode 100644 index d678287..0000000 --- a/Controllers/ApiUserController.cs +++ /dev/null @@ -1,109 +0,0 @@ -using HyperBooru.Services; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; - -namespace HyperBooru.Controllers; - -[ApiController] -[Authorize] -[Route("/api/user")] -public class ApiUserController : Controller { - private IDbContextFactory<HBContext> dbFactory; - - public ApiUserController(IDbContextFactory<HBContext> dbFactory) => - this.dbFactory = dbFactory; - - [HttpGet] - public async Task<IActionResult> GetAllUsersAsync() { - using var db = dbFactory.CreateDbContext(); - - return Ok(await db.Users - .Select(u => (ApiModels.User) u) - .ToArrayAsync()); - } - - [HttpGet("{userId}")] - public async Task<IActionResult> GetUserAsync([FromRoute] Guid userId) { - using var db = dbFactory.CreateDbContext(); - - var user = await db.Users - .FirstOrDefaultAsync(u => u.Guid == userId); - - return user is null ? NotFound() : Ok((ApiModels.User) user); - } - - [HttpPost] - public async Task<IActionResult> CreateUserAsync([FromBody] ApiModels.UserCreateRequest request) { - using var db = dbFactory.CreateDbContext(); - - using var transaction = await db.Database.BeginTransactionAsync(); - - if(await db.Users.AnyAsync(u => u.Username == request.Username)) - return BadRequest("Username already exists"); - - var user = new User() { - Username = request.Username, - PasswordHash = UserService.HashPassword(request.Password) - }; - - db.Users.Add(user); - - await db.SaveChangesAsync(); - await transaction.CommitAsync(); - - return Ok((ApiModels.User) user); - } - - [HttpPatch("{userId}")] - public async Task<IActionResult> UpdateUserAsync( - [FromRoute] Guid userId, - [FromBody] ApiModels.UserUpdateRequest request) { - - using var db = dbFactory.CreateDbContext(); - - using var transaction = await db.Database.BeginTransactionAsync(); - - var user = await db.Users.FirstOrDefaultAsync(u => u.Guid == userId); - if(user is null) - return NotFound(); - - if(request.Username is not null) { - if(string.IsNullOrWhiteSpace(request.Username)) - return BadRequest("Username cannot be empty"); - user.Username = request.Username; - } - - if(request.Password is not null) { - if(string.IsNullOrWhiteSpace(request.Password)) - return BadRequest("Password cannot be empty"); - user.PasswordHash = UserService.HashPassword(request.Password); - } - - await db.SaveChangesAsync(); - await transaction.CommitAsync(); - - return Ok((ApiModels.User) user); - } - - [HttpDelete("{userId}")] - public async Task<IActionResult> DeleteUserAsync([FromRoute] Guid userId) { - if(userId == HBContext.AdminUser) - return BadRequest("Cannot delete the admin user"); - - using var db = dbFactory.CreateDbContext(); - - using var transaction = await db.Database.BeginTransactionAsync(); - - var user = await db.Users.FirstOrDefaultAsync(u => u.Guid == userId); - if(user is null) - return NotFound(); - - db.Users.Remove(user); - - await db.SaveChangesAsync(); - await transaction.CommitAsync(); - - return Ok((ApiModels.User) user); - } -} |
