diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index baffef3..aa663c1 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -164,6 +164,7 @@ public class Gruppen2Controller { @PostMapping("/detailsBeitreten") public String joinGroup(KeycloakAuthenticationToken token, Model model, @RequestParam("id") Long groupId) throws EventException { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + Account account = keyCloakService.createAccountFromPrincipal(token); User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); Group group = userService.getGroupById(groupId); @@ -228,12 +229,15 @@ public class Gruppen2Controller { @PostMapping("/details/members/changeRole") public String changeRole(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId, @RequestParam("user_id") String userId) throws EventException { + Account account = keyCloakService.createAccountFromPrincipal(token); controllerService.updateRole(userId, groupId); + if(userId.equals(account.getName())) return "redirect:/gruppen2/details/" + groupId; return "redirect:/gruppen2/details/members/" + groupId; } @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @PostMapping("/details/members/deleteUser") + public String deleteUser(KeycloakAuthenticationToken token, @RequestParam("group_id") Long groupId, @RequestParam("user_id") String userId) throws EventException { controllerService.deleteUser(userId, groupId); diff --git a/src/main/java/mops/gruppen2/domain/User.java b/src/main/java/mops/gruppen2/domain/User.java index 08ff119..7b961c4 100644 --- a/src/main/java/mops/gruppen2/domain/User.java +++ b/src/main/java/mops/gruppen2/domain/User.java @@ -3,14 +3,16 @@ package mops.gruppen2.domain; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.NoArgsConstructor; @Getter @AllArgsConstructor +@NoArgsConstructor @EqualsAndHashCode(exclude = {"givenname", "familyname", "email"}) public class User { - private final String id; - private final String givenname; - private final String familyname; - private final String email; + private String id; + private String givenname; + private String familyname; + private String email; } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 3b3ff54..f7b5d62 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -1,6 +1,7 @@ package mops.gruppen2.service; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.User; import mops.gruppen2.domain.dto.EventDTO; import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.exception.EventException; @@ -66,11 +67,11 @@ public class GroupService { return groups.get(groupId); } - private List removeUserGroups(List groupIds, List userGroups) { - for (Long groupId : userGroups) { - groupIds.remove(groupId); + private List removeUserGroups(List visibleGroups, List userGroups) { + for (Group group : userGroups) { + visibleGroups.remove(group); } - return groupIds; + return visibleGroups; } /** @@ -81,10 +82,18 @@ public class GroupService { * @throws EventException Projektionsfehler */ public List getAllGroupWithVisibilityPublic(String userId) throws EventException { - List groupIds = removeUserGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE), eventRepository.findGroup_idsWhereUser_id(userId)); - List eventDTOS = eventRepository.findAllEventsOfGroups(groupIds); - List events = eventService.translateEventDTOs(eventDTOS); - return projectEventList(events); + User user = new User(userId,null, null, null); + List eventsVisible = eventService.translateEventDTOs(eventRepository.findAllEventsOfGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE))); + List visibleGroups = projectEventList(eventsVisible); + List eventsUser = getGroupEvents(eventRepository.findGroup_idsWhereUser_id(userId)); + List groups = projectEventList(eventsUser); + List newGroups = new ArrayList<>(); + for (Group group : groups) { + if (group.getMembers().contains(user)) { + newGroups.add(group); + } + } + return removeUserGroups(visibleGroups, newGroups); } diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 3c321a8..65901cf 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -34,8 +34,8 @@

Gruppenerstellung

-
+
+
-
+

-
+

Mitglied Rolle - Optionen + Optionen - @@ -84,7 +83,7 @@ type="hidden"> - @@ -93,7 +92,7 @@ type="hidden"> - diff --git a/src/main/resources/templates/error.html b/src/main/resources/templates/error.html index 5ea8655..87383ce 100644 --- a/src/main/resources/templates/error.html +++ b/src/main/resources/templates/error.html @@ -10,7 +10,7 @@ Seite nicht gefunden -
+

UPSI

@@ -31,4 +31,4 @@
- + \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index cf38815..6089e2f 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -45,7 +45,7 @@


-
+

diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html index 0d41f05..1a9b51c 100644 --- a/src/main/resources/templates/search.html +++ b/src/main/resources/templates/search.html @@ -33,7 +33,7 @@

Gruppensuche

-
+