diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 3623712..5a56218 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -3,7 +3,6 @@ package mops.gruppen2.controller; import mops.gruppen2.config.Gruppen2Config; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; - import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; import mops.gruppen2.domain.Visibility; @@ -118,9 +117,10 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) @GetMapping("/findGroup") public String findGroup(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "suchbegriff", required = false) String suchbegriff) throws EventException { + Account account = keyCloakService.createAccountFromPrincipal(token); List groupse = new ArrayList<>(); if (suchbegriff != null) { - groupse = groupService.findGroupWith(suchbegriff); + groupse = groupService.findGroupWith(suchbegriff,account); } model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); model.addAttribute("gruppen", groupse); @@ -141,9 +141,10 @@ public class Gruppen2Controller { return "redirect:/gruppen2/"; } - @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) - @GetMapping("/details") - public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException, ResponseStatusException { + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("/details/{id}") + public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @PathVariable (value="id") Long id) throws EventException, ResponseStatusException { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); Group group = userService.getGroupById(id); Account account = keyCloakService.createAccountFromPrincipal(token); @@ -196,22 +197,23 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) @PostMapping("/leaveGroup") - public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam(value = "group_id") Long id) { + public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam (value="group_id") Long id) throws EventException { Account account = keyCloakService.createAccountFromPrincipal(token); User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); - controllerService.deleteUser(user, id); + controllerService.deleteUser(user.getUser_id(), id); return "redirect:/gruppen2/"; } @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) - @GetMapping("/details/members") - public String editMembers(Model model, KeycloakAuthenticationToken token, @RequestParam (value = "group_id") Long id) throws EventException { + @GetMapping("/details/members/{id}") + public String editMembers(Model model, KeycloakAuthenticationToken token, @PathVariable (value="id") Long id) throws EventException { Account account = keyCloakService.createAccountFromPrincipal(token); Group group = userService.getGroupById(id); if(group.getRoles().get(account.getName()) == Role.ADMIN) { model.addAttribute("account", account); model.addAttribute("members", group.getMembers()); model.addAttribute("group", group); + model.addAttribute("admin", Role.ADMIN); return "editMembers"; } else { return "redirect:/details/"; @@ -219,13 +221,20 @@ public class Gruppen2Controller { } @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) - @PostMapping("/changeRole") - public String changeRole(KeycloakAuthenticationToken token, @RequestParam (value = "group_id") Long id, - @RequestParam (value = "user") User user) throws EventException { - controllerService.updateRole(user, id); - return "redirect:/details/members/"; + @PostMapping("/details/members/changeRole") + public String changeRole(KeycloakAuthenticationToken token, @RequestParam (value = "group_id") Long group_id, + @RequestParam (value = "user_id") String user_id) throws EventException { + controllerService.updateRole(user_id, group_id); + return "redirect:/gruppen2/details/members/" + group_id; } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @PostMapping("/details/members/deleteUser") + public String deleteUser(KeycloakAuthenticationToken token,@RequestParam (value = "group_id") Long group_id, + @RequestParam (value = "user_id") String user_id) throws EventException { + controllerService.deleteUser(user_id, group_id); + return "redirect:/gruppen2/details/members/" + group_id; + } @GetMapping("*") public String defaultLink() { diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 1152832..67ec2d1 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -5,7 +5,10 @@ import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.event.*; import mops.gruppen2.security.Account; import org.springframework.stereotype.Service; -import java.util.*; + +import java.util.List; +import java.util.UUID; + @Service public class ControllerService { @@ -47,7 +50,7 @@ public class ControllerService { addUser(account, group_id); updateTitle(account, group_id, title); updateDescription(account, group_id, description); - updateRole(user, group_id); + updateRole(user.getUser_id(), group_id); } private void createInviteLink(Long group_id) { @@ -77,9 +80,14 @@ public class ControllerService { eventService.saveEvent(updateGroupDescriptionEvent); } - public void updateRole(User user, Long group_id) throws EventException { + public void updateRole(String user_id, Long group_id) throws EventException { UpdateRoleEvent updateRoleEvent; Group group = userService.getGroupById(group_id); + User user = null; + for (User member : group.getMembers()) { + if(member.getUser_id().equals(user_id)) user = member; + } + assert user != null; if(group.getRoles().get(user.getUser_id()) == Role.ADMIN) { updateRoleEvent = new UpdateRoleEvent(group_id, user.getUser_id(), Role.MEMBER); } else { @@ -88,11 +96,22 @@ public class ControllerService { eventService.saveEvent(updateRoleEvent); } - public void deleteUser(User user, Long group_id){ + public void deleteUser(String user_id, Long group_id) throws EventException { + Group group = userService.getGroupById(group_id); + User user = null; + for (User member : group.getMembers()) { + if(member.getUser_id().equals(user_id)) user = member; + } + assert user != null; DeleteUserEvent deleteUserEvent = new DeleteUserEvent(group_id, user.getUser_id()); eventService.saveEvent(deleteUserEvent); } + public void deleteGroupEvent(User user, Long group_id) { + DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(group_id, user.getUser_id()); + eventService.saveEvent(deleteGroupEvent); + } + public void createLecture(Account account, String title, String description, Boolean visibility, List users) throws EventException { Visibility visibility1; Long group_id = eventService.checkGroup(); @@ -105,17 +124,12 @@ public class ControllerService { CreateGroupEvent createGroupEvent = new CreateGroupEvent(group_id, account.getName(), null, GroupType.LECTURE, visibility1); eventService.saveEvent(createGroupEvent); - User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); addUser(account, group_id); updateTitle(account, group_id, title); updateDescription(account, group_id, description); - updateRole(user, group_id); + updateRole(account.getName(), group_id); addUserList(users, group_id); - } - public void deleteGroupEvent(User user, Long group_id) { - DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(group_id, user.getUser_id()); - eventService.saveEvent(deleteGroupEvent); } } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index e6adcb3..ec3c4e6 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -6,6 +6,7 @@ import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Visibility; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; +import mops.gruppen2.security.Account; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -71,15 +72,21 @@ public class GroupService { return groups.get(group_id); } + private List removeUserGroups(List group_ids, List user_groups) { + for (Long group_id: user_groups) { + group_ids.remove(group_id); + } + return group_ids; + } + /** - * sucht alle Zeilen in der DB wo die Visibility gleich true ist und wandelt diese in - * eine Liste von Gruppen + * sucht alle Zeilen in der DB wo die Visibility true ist und entfernt alle Gruppen des Users. + * Erstellt eine Liste aus Gruppen. * @return * @throws EventException */ - - public List getAllGroupWithVisibilityPublic() throws EventException { - List group_ids = eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE); + public List getAllGroupWithVisibilityPublic(String user_id) throws EventException { + List group_ids = removeUserGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE), eventRepository.findGroup_idsWhereUser_id(user_id)); List eventDTOS = eventRepository.findAllEventsOfGroups(group_ids); List events = eventService.translateEventDTOs(eventDTOS); List groups = projectEventList(events); @@ -94,10 +101,10 @@ public class GroupService { * @return * @throws EventException */ - public List findGroupWith(String search) throws EventException { + public List findGroupWith(String search, Account account) throws EventException { List groups = new ArrayList<>(); - for (Group group: getAllGroupWithVisibilityPublic()) { - if (group.getTitle().contains(search)|| group.getDescription().contains(search)){ + for (Group group: getAllGroupWithVisibilityPublic(account.getName())) { + if (group.getTitle().toLowerCase().contains(search.toLowerCase()) || group.getDescription().toLowerCase().contains(search.toLowerCase())){ groups.add(group); } } diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index b12a6d1..a45d005 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -31,33 +31,39 @@
-
-
-

-

+

+

+

Private Gruppe Öffentliche Gruppe Veranstaltung -

-

-
-
-
- -
-
+

+
+
+

+
+
+ -
-
-

Mitglieder

+
+

Mitglieder

-
- + +
-

+
+
    diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index eb8a506..afd346c 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -32,13 +32,15 @@
    -

    -

    - Private Gruppe +

    +

    + Private Gruppe Öffentliche Gruppe - Veranstaltung -

    -

    + Veranstaltung +

    +
    +

    +
    diff --git a/src/main/resources/templates/editMembers.html b/src/main/resources/templates/editMembers.html index 0b07f9e..90511b3 100644 --- a/src/main/resources/templates/editMembers.html +++ b/src/main/resources/templates/editMembers.html @@ -56,24 +56,36 @@ Mitglied - Rolle - Optionen + Rolle + Optionen - + + - Mitglied - Admin + Mitglied + Admin - - + + + + +
    +
    + + + +
    +
    diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 2baaf59..5d51236 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -34,33 +34,27 @@

    Meine Gruppen

    +

    + Mitglied in + + Gruppe. + Gruppen. +

    +
    +

    - +

    -

    +
    +

    +

    -
    -
    -
    -

    user_id

    -

    - username - usersurname -

    -

    usermail

    -

    - In Gruppen: - -

    -
    -
    -