From f5c90b0ae472d2193c97a8bb031623e1cb3f3518 Mon Sep 17 00:00:00 2001 From: Mathis HERRIOT <197931332+0x485254@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:20:32 +0100 Subject: [PATCH] feat(users): add `updateAdmin` endpoint and enhance role assignment - Introduced `PATCH /admin/:uuid` endpoint for admin-specific user updates. - Updated `update` logic to handle role assignment via `rbacService`. - Refactored `findAll` method in repository for improved readability. --- backend/src/users/repositories/users.repository.ts | 4 +++- backend/src/users/users.controller.ts | 10 ++++++++++ backend/src/users/users.service.ts | 9 ++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/backend/src/users/repositories/users.repository.ts b/backend/src/users/repositories/users.repository.ts index efb558b..eec6a8a 100644 --- a/backend/src/users/repositories/users.repository.ts +++ b/backend/src/users/repositories/users.repository.ts @@ -64,7 +64,7 @@ export class UsersRepository { } async findAll(limit: number, offset: number) { - return await this.databaseService.db + const result = await this.databaseService.db .select({ uuid: users.uuid, username: users.username, @@ -77,6 +77,8 @@ export class UsersRepository { .from(users) .limit(limit) .offset(offset); + + return result; } async findByUsername(username: string) { diff --git a/backend/src/users/users.controller.ts b/backend/src/users/users.controller.ts index e49dfcb..8ce1db6 100644 --- a/backend/src/users/users.controller.ts +++ b/backend/src/users/users.controller.ts @@ -112,6 +112,16 @@ export class UsersController { return this.usersService.remove(uuid); } + @Patch("admin/:uuid") + @UseGuards(AuthGuard, RolesGuard) + @Roles("admin") + updateAdmin( + @Param("uuid") uuid: string, + @Body() updateUserDto: UpdateUserDto, + ) { + return this.usersService.update(uuid, updateUserDto); + } + // Double Authentification (2FA) @Post("me/2fa/setup") @UseGuards(AuthGuard) diff --git a/backend/src/users/users.service.ts b/backend/src/users/users.service.ts index b2d9c31..82fa7ad 100644 --- a/backend/src/users/users.service.ts +++ b/backend/src/users/users.service.ts @@ -100,7 +100,14 @@ export class UsersService { async update(uuid: string, data: UpdateUserDto) { this.logger.log(`Updating user profile for ${uuid}`); - const result = await this.usersRepository.update(uuid, data); + + const { role, ...userData } = data; + + const result = await this.usersRepository.update(uuid, userData); + + if (role) { + await this.rbacService.assignRoleToUser(uuid, role); + } if (result[0]) { await this.clearUserCache(result[0].username);