From 1739a2b120b210bfbadc77cc46e61820be8d61ce Mon Sep 17 00:00:00 2001 From: Oleksandr Bezdieniezhnykh Date: Thu, 2 Oct 2025 01:29:33 +0300 Subject: [PATCH] add edit role functionality --- Azaion.Api/Program.cs | 5 +++++ Azaion.Services/UserService.cs | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/Azaion.Api/Program.cs b/Azaion.Api/Program.cs index b3d59f5..0b9e0e3 100644 --- a/Azaion.Api/Program.cs +++ b/Azaion.Api/Program.cs @@ -173,6 +173,11 @@ app.MapPut("/users/queue-offsets/set", .RequireAuthorization() .WithOpenApi(op => new OpenApiOperation(op) { Summary = "Sets user's queue offsets" }); +app.MapPut("/users/{email}/set-role/{role}", async (string email, RoleEnum role, IUserService userService, CancellationToken ct) + => await userService.ChangeRole(email, role, ct)) + .RequireAuthorization(apiAdminPolicy) + .WithOpenApi(op => new OpenApiOperation(op) { Summary = "Set user's role" }); + app.MapPut("/users/{email}/enable", async (string email, IUserService userService, CancellationToken ct) => await userService.SetEnableStatus(email, true, ct)) .RequireAuthorization(apiAdminPolicy) diff --git a/Azaion.Services/UserService.cs b/Azaion.Services/UserService.cs index 006488b..baf0503 100644 --- a/Azaion.Services/UserService.cs +++ b/Azaion.Services/UserService.cs @@ -16,6 +16,7 @@ public interface IUserService Task UpdateQueueOffsets(string email, UserQueueOffsets queueOffsets, CancellationToken ct = default); Task> GetUsers(string? searchEmail, RoleEnum? searchRole, CancellationToken ct = default); Task CheckHardwareHash(User user, string hardware, CancellationToken ct = default); + Task ChangeRole(string email, RoleEnum newRole, CancellationToken ct = default); Task SetEnableStatus(string email, bool isEnabled, CancellationToken ct = default); Task RemoveUser(string email, CancellationToken ct = default); } @@ -131,6 +132,15 @@ public class UserService(IDbFactory dbFactory, ICache cache) : IUserService }, ct)); } + public async Task ChangeRole(string email, RoleEnum newRole, CancellationToken ct = default) + { + await dbFactory.RunAdmin(async db => + await db.Users.UpdateAsync(x => x.Email == email, u => new User + { + Role = newRole + }, ct)); + } + public async Task SetEnableStatus(string email, bool isEnabled, CancellationToken ct = default) { await dbFactory.RunAdmin(async db =>