diff --git a/backend/src/main/java/ch/sectioninformatique/template/user/UserController.java b/backend/src/main/java/ch/sectioninformatique/template/user/UserController.java index e0ef4bbd..9f874cb5 100644 --- a/backend/src/main/java/ch/sectioninformatique/template/user/UserController.java +++ b/backend/src/main/java/ch/sectioninformatique/template/user/UserController.java @@ -259,6 +259,20 @@ public Mono> revokeAdmin(@RequestHeader("Authorization") @PreAuthorize("hasAuthority('user:update')") public Mono> downgradeAdmin(@RequestHeader("Authorization") String token, @PathVariable String userLogin) { + + Authentication authentication = SecurityContextHolder + .getContext() + .getAuthentication(); + + UserDto currentUser = (UserDto) authentication.getPrincipal(); + if (currentUser.getLogin().equals(userLogin)) { + String message = messageSource.getMessage( + "user.downgrade.self", + null, + LocaleContextHolder.getLocale()); + return Mono.just(ResponseEntity.badRequest().body(message)); + } + // Call auth service to downgrade admin to manager globally return authClient.downgradeAdmin(token, userLogin) .flatMap(response -> { diff --git a/backend/src/main/resources/messages/user/messages_en.properties b/backend/src/main/resources/messages/user/messages_en.properties index 121873b1..ef1ed92f 100644 --- a/backend/src/main/resources/messages/user/messages_en.properties +++ b/backend/src/main/resources/messages/user/messages_en.properties @@ -24,3 +24,4 @@ user.duplicate=Duplicate user detected: {0} user.delete.permanent.failed=Failed to permanently delete user: {0} user.deleted.local=Local user deleted successfully user.promoted.local=User promoted to local app role successfully +user.downgrade.self=You cannot downgrade your own role diff --git a/backend/src/main/resources/messages/user/messages_fr.properties b/backend/src/main/resources/messages/user/messages_fr.properties index c3b7a6b6..5ddc72f0 100644 --- a/backend/src/main/resources/messages/user/messages_fr.properties +++ b/backend/src/main/resources/messages/user/messages_fr.properties @@ -24,3 +24,4 @@ user.duplicate=Utilisateur en double détecté : {0} user.delete.permanent.failed=Échec de la suppression définitive de l''utilisateur : {0} user.deleted.local=Utilisateur local supprimé avec succès user.promoted.local=Utilisateur promu au rôle local de l''application avec succès +user.downgrade.self=Vous ne pouvez pas rétrograder votre propre rôle \ No newline at end of file