diff --git a/Moonlight.ApiServer/Http/Controllers/Admin/Users/UsersController.cs b/Moonlight.ApiServer/Http/Controllers/Admin/Users/UsersController.cs index d0e5f949..2e72b3af 100644 --- a/Moonlight.ApiServer/Http/Controllers/Admin/Users/UsersController.cs +++ b/Moonlight.ApiServer/Http/Controllers/Admin/Users/UsersController.cs @@ -5,6 +5,7 @@ using MoonCore.Extended.Helpers; using MoonCore.Models; using Moonlight.ApiServer.Database.Entities; using Moonlight.Shared.Http.Requests.Admin.Users; +using Moonlight.Shared.Http.Responses.Admin.Users; namespace Moonlight.ApiServer.Http.Controllers.Admin.Users; @@ -12,25 +13,25 @@ namespace Moonlight.ApiServer.Http.Controllers.Admin.Users; [Route("api/admin/users")] public class UsersController : Controller { - private readonly CrudHelper CrudHelper; + private readonly CrudHelper CrudHelper; private readonly DatabaseRepository UserRepository; - public UsersController(CrudHelper crudHelper, DatabaseRepository userRepository) + public UsersController(CrudHelper crudHelper, DatabaseRepository userRepository) { CrudHelper = crudHelper; UserRepository = userRepository; } [HttpGet] - public async Task> Get([FromQuery] int page, [FromQuery] int pageSize = 50) + public async Task> Get([FromQuery] int page, [FromQuery] int pageSize = 50) => await CrudHelper.Get(page, pageSize); [HttpGet("{id}")] - public async Task GetSingle(int id) + public async Task GetSingle(int id) => await CrudHelper.GetSingle(id); [HttpPost] - public async Task Create([FromBody] CreateUserRequest request) + public async Task Create([FromBody] CreateUserRequest request) { // Reformat values request.Username = request.Username.ToLower().Trim(); @@ -49,9 +50,9 @@ public class UsersController : Controller } [HttpPatch("{id}")] - public async Task Update([FromRoute] int id, [FromBody] UpdateUserRequest request) + public async Task Update([FromRoute] int id, [FromBody] UpdateUserRequest request) { - var user = await CrudHelper.GetSingle(id); + var user = await CrudHelper.GetSingleModel(id); // Reformat values request.Username = request.Username.ToLower().Trim(); @@ -63,7 +64,14 @@ public class UsersController : Controller if (UserRepository.Get().Any(x => x.Email == request.Email && x.Id != user.Id)) throw new HttpApiException("A user with that email address already exists", 400); - + + // Perform hashing the password if required + if (!string.IsNullOrEmpty(request.Password)) + { + request.Password = HashHelper.Hash(request.Password); + user.TokenValidTimestamp = DateTime.UtcNow; // This change will get applied by the crud helper + } + return await CrudHelper.Update(user, request); } diff --git a/Moonlight.ApiServer/Moonlight.ApiServer.csproj b/Moonlight.ApiServer/Moonlight.ApiServer.csproj index 6df60878..58691412 100644 --- a/Moonlight.ApiServer/Moonlight.ApiServer.csproj +++ b/Moonlight.ApiServer/Moonlight.ApiServer.csproj @@ -13,7 +13,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Moonlight.ApiServer/Program.cs b/Moonlight.ApiServer/Program.cs index 706b486b..0263b092 100644 --- a/Moonlight.ApiServer/Program.cs +++ b/Moonlight.ApiServer/Program.cs @@ -86,7 +86,7 @@ var databaseHelper = new DatabaseHelper( builder.Services.AddSingleton(databaseHelper); builder.Services.AddScoped(typeof(DatabaseRepository<>)); -builder.Services.AddScoped(typeof(CrudHelper<>)); +builder.Services.AddScoped(typeof(CrudHelper<,>)); builder.Services.AddDbContext(); databaseHelper.AddDbContext(); diff --git a/Moonlight.Client/UI/Partials/AppHeader.razor b/Moonlight.Client/UI/Partials/AppHeader.razor index 0da86ce0..e8c275c3 100644 --- a/Moonlight.Client/UI/Partials/AppHeader.razor +++ b/Moonlight.Client/UI/Partials/AppHeader.razor @@ -62,7 +62,7 @@ From: "transform opacity-100 scale-100" To: "transform opacity-0 scale-95" --> -