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);