From cf46a549dc1dc654281617e8b76c6e40f8430518 Mon Sep 17 00:00:00 2001 From: Lukas Ettel <34522828+LukasEttel@users.noreply.github.com> Date: Thu, 19 Mar 2020 16:10:35 +0100 Subject: [PATCH] admin change when leaving group Co-Authored-By: kasch309 Co-Authored-By: andibuls Co-Authored-By: xxnitram --- .../java/mops/gruppen2/controller/Gruppen2Controller.java | 6 +++++- src/main/java/mops/gruppen2/service/ControllerService.java | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index c549f4f..0f7ca13 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -6,6 +6,7 @@ import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.GroupNotFoundException; +import mops.gruppen2.domain.exception.NoAdminAfterActionExeption; import mops.gruppen2.security.Account; import mops.gruppen2.service.ControllerService; import mops.gruppen2.service.CsvService; @@ -202,6 +203,7 @@ public class Gruppen2Controller { public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId) throws EventException { Account account = keyCloakService.createAccountFromPrincipal(token); User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); + controllerService.passIfLastAdmin(account, groupId); controllerService.deleteUser(user.getId(), groupId); return "redirect:/gruppen2/"; } @@ -230,7 +232,9 @@ public class Gruppen2Controller { Account account = keyCloakService.createAccountFromPrincipal(token); if (userId.equals(account.getName())) { - controllerService.passIfLastAdmin(account, groupId); + if (controllerService.passIfLastAdmin(account, groupId)){ + throw new NoAdminAfterActionExeption("Du otto bist letzter Admin"); + } controllerService.updateRole(userId, groupId); return "redirect:/gruppen2/details/" + groupId; } diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 02ef799..349f329 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -160,16 +160,17 @@ public class ControllerService { addUserList(users, groupId); } - public void passIfLastAdmin(Account account, Long groupId){ + public boolean passIfLastAdmin(Account account, Long groupId){ Group group = userService.getGroupById(groupId); if (group.getMembers().size() <= 1){ - throw new NoAdminAfterActionExeption("Du otto bist letzter Admin"); + return true; } if (isLastAdmin(account, group)){ String newAdminId = getVeteranMember(account, group); updateRole(newAdminId, groupId); } + return false; } private boolean isLastAdmin(Account account, Group group){