1

admin change when leaving group

Co-Authored-By: kasch309 <kasch309@users.noreply.github.com>
Co-Authored-By: andibuls <andibuls@users.noreply.github.com>
Co-Authored-By: xxnitram <xxnitram@users.noreply.github.com>
This commit is contained in:
Lukas Ettel
2020-03-19 16:10:35 +01:00
parent 06b308167d
commit cf46a549dc
2 changed files with 8 additions and 3 deletions

View File

@ -6,6 +6,7 @@ import mops.gruppen2.domain.Role;
import mops.gruppen2.domain.User; import mops.gruppen2.domain.User;
import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.exception.EventException;
import mops.gruppen2.domain.exception.GroupNotFoundException; import mops.gruppen2.domain.exception.GroupNotFoundException;
import mops.gruppen2.domain.exception.NoAdminAfterActionExeption;
import mops.gruppen2.security.Account; import mops.gruppen2.security.Account;
import mops.gruppen2.service.ControllerService; import mops.gruppen2.service.ControllerService;
import mops.gruppen2.service.CsvService; import mops.gruppen2.service.CsvService;
@ -202,6 +203,7 @@ public class Gruppen2Controller {
public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId) throws EventException { public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId) throws EventException {
Account account = keyCloakService.createAccountFromPrincipal(token); Account account = keyCloakService.createAccountFromPrincipal(token);
User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail());
controllerService.passIfLastAdmin(account, groupId);
controllerService.deleteUser(user.getId(), groupId); controllerService.deleteUser(user.getId(), groupId);
return "redirect:/gruppen2/"; return "redirect:/gruppen2/";
} }
@ -230,7 +232,9 @@ public class Gruppen2Controller {
Account account = keyCloakService.createAccountFromPrincipal(token); Account account = keyCloakService.createAccountFromPrincipal(token);
if (userId.equals(account.getName())) { 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); controllerService.updateRole(userId, groupId);
return "redirect:/gruppen2/details/" + groupId; return "redirect:/gruppen2/details/" + groupId;
} }

View File

@ -160,16 +160,17 @@ public class ControllerService {
addUserList(users, groupId); addUserList(users, groupId);
} }
public void passIfLastAdmin(Account account, Long groupId){ public boolean passIfLastAdmin(Account account, Long groupId){
Group group = userService.getGroupById(groupId); Group group = userService.getGroupById(groupId);
if (group.getMembers().size() <= 1){ if (group.getMembers().size() <= 1){
throw new NoAdminAfterActionExeption("Du otto bist letzter Admin"); return true;
} }
if (isLastAdmin(account, group)){ if (isLastAdmin(account, group)){
String newAdminId = getVeteranMember(account, group); String newAdminId = getVeteranMember(account, group);
updateRole(newAdminId, groupId); updateRole(newAdminId, groupId);
} }
return false;
} }
private boolean isLastAdmin(Account account, Group group){ private boolean isLastAdmin(Account account, Group group){