From 7bbdbad28ea68d6e27bc4f56744bd50a96b22d0c Mon Sep 17 00:00:00 2001 From: kasch309 Date: Fri, 13 Mar 2020 14:27:38 +0100 Subject: [PATCH 1/9] Add details.html to display group details --- src/main/resources/templates/details.html | 53 +++++++++++++++++++++++ src/main/resources/templates/index.html | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/templates/details.html diff --git a/src/main/resources/templates/details.html b/src/main/resources/templates/details.html new file mode 100644 index 0000000..07ffc05 --- /dev/null +++ b/src/main/resources/templates/details.html @@ -0,0 +1,53 @@ + + + + + Name des Subsystems + + + + + +
+ +
+
+
+
+
+

+

+ , + +

+

+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 822ebf1..ba20b5a 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -31,7 +31,7 @@

- +

From eeded221b472332a41e2e63245cbb3ce39d84553 Mon Sep 17 00:00:00 2001 From: kasch309 Date: Fri, 13 Mar 2020 14:28:16 +0100 Subject: [PATCH 2/9] Add method to find group by id Add method to connect details.html to the controller --- .../java/mops/gruppen2/controller/Gruppen2Controller.java | 7 +++++++ src/main/java/mops/gruppen2/service/UserService.java | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 96ec538..271f02c 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -83,4 +83,11 @@ public class Gruppen2Controller { return "redirect:/gruppen2/"; } + @GetMapping("/details") + public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam (value="group_id") Long group_id) throws EventException { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + model.addAttribute("group", userService.getGroupById(group_id)); + return "details"; + } + } diff --git a/src/main/java/mops/gruppen2/service/UserService.java b/src/main/java/mops/gruppen2/service/UserService.java index bfe8b37..7fe6122 100644 --- a/src/main/java/mops/gruppen2/service/UserService.java +++ b/src/main/java/mops/gruppen2/service/UserService.java @@ -6,6 +6,7 @@ import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service @@ -26,4 +27,11 @@ public class UserService { List events = groupService.getGroupEvents(group_ids); return groupService.projectEventList(events); } + + public Group getGroupById(Long group_id) throws EventException { + List group_ids = new ArrayList<>(); + group_ids.add(group_id); + List events = groupService.getGroupEvents(group_ids); + return groupService.projectEventList(events).get(0); + } } From 68fcc06a174e564f9b6a01e746901d530a5cc2d2 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 13 Mar 2020 15:11:23 +0100 Subject: [PATCH 3/9] add details page --- .../gruppen2/controller/Gruppen2Controller.java | 14 +++++++++++--- .../apiWrapper/UpdatedGroupRequestMapper.java | 16 ++++++++++++++++ src/main/resources/templates/index.html | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 src/main/java/mops/gruppen2/domain/apiWrapper/UpdatedGroupRequestMapper.java diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 271f02c..b71ca19 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -2,6 +2,7 @@ package mops.gruppen2.controller; import mops.gruppen2.config.Gruppen2Config; import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Group; import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.User; import mops.gruppen2.domain.Visibility; @@ -13,9 +14,11 @@ import mops.gruppen2.security.Account; import mops.gruppen2.service.*; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import org.springframework.web.server.ResponseStatusException; import javax.annotation.security.RolesAllowed; @@ -83,11 +86,16 @@ public class Gruppen2Controller { return "redirect:/gruppen2/"; } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @GetMapping("/details") - public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam (value="group_id") Long group_id) throws EventException { + public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException, ResponseStatusException { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); - model.addAttribute("group", userService.getGroupById(group_id)); - return "details"; + Group group = userService.getGroupById(id); + if(group!= null) { + model.addAttribute("group", group); + return "details"; + } + throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); } } diff --git a/src/main/java/mops/gruppen2/domain/apiWrapper/UpdatedGroupRequestMapper.java b/src/main/java/mops/gruppen2/domain/apiWrapper/UpdatedGroupRequestMapper.java new file mode 100644 index 0000000..a8b73dc --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/apiWrapper/UpdatedGroupRequestMapper.java @@ -0,0 +1,16 @@ +package mops.gruppen2.domain.apiWrapper; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Group; + +import java.util.List; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class UpdatedGroupRequestMapper { + private Long status; + private List groupList; +} diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index ba20b5a..631364c 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -31,7 +31,7 @@

- +

From 86622b4a0cdcff50fcbb2f6cd988ef26cc7db87b Mon Sep 17 00:00:00 2001 From: kasch309 Date: Fri, 13 Mar 2020 16:07:12 +0100 Subject: [PATCH 4/9] add cases for different roles and visibility --- .../controller/Gruppen2Controller.java | 14 +++++------ .../{details.html => detailsMember.html} | 24 ++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) rename src/main/resources/templates/{details.html => detailsMember.html} (62%) diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index b71ca19..12d397e 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -3,13 +3,8 @@ package mops.gruppen2.controller; import mops.gruppen2.config.Gruppen2Config; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; -import mops.gruppen2.domain.GroupType; +import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; -import mops.gruppen2.domain.Visibility; -import mops.gruppen2.domain.event.AddUserEvent; -import mops.gruppen2.domain.event.CreateGroupEvent; -import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent; -import mops.gruppen2.domain.event.UpdateGroupTitleEvent; import mops.gruppen2.security.Account; import mops.gruppen2.service.*; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; @@ -21,6 +16,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.server.ResponseStatusException; import javax.annotation.security.RolesAllowed; +import java.util.Set; @Controller @RequestMapping("/gruppen2") @@ -91,9 +87,13 @@ public class Gruppen2Controller { public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException, ResponseStatusException { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); Group group = userService.getGroupById(id); + Account account = keyCloakService.createAccountFromPrincipal (token); + User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail()); + Role role = group.getRoles().get(user); if(group!= null) { model.addAttribute("group", group); - return "details"; + model.addAttribute("role",role); + return "detailsMember"; } throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); } diff --git a/src/main/resources/templates/details.html b/src/main/resources/templates/detailsMember.html similarity index 62% rename from src/main/resources/templates/details.html rename to src/main/resources/templates/detailsMember.html index 07ffc05..c912c5a 100644 --- a/src/main/resources/templates/details.html +++ b/src/main/resources/templates/detailsMember.html @@ -29,22 +29,24 @@

-

- , - +

From a1cc13eb00982b668ad7777b3e96a0c22ce4af2e Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 13 Mar 2020 16:08:47 +0100 Subject: [PATCH 5/9] change create --- src/main/resources/templates/create.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 00908f0..dbfabb9 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -37,7 +37,7 @@
-
+
From 46985ccca70aae6ebb59de477c1494ff0cdf3679 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Fri, 13 Mar 2020 16:27:34 +0100 Subject: [PATCH 6/9] add button elements depending on various factors --- .../gruppen2/domain/event/UpdateRoleEvent.java | 8 +++++++- .../gruppen2/service/ControllerService.java | 3 +++ .../resources/templates/detailsMember.html | 18 ++++++++---------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index a4301de..570b7e3 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -14,8 +14,14 @@ public class UpdateRoleEvent extends Event { Role newRole; public UpdateRoleEvent(Long event_id, Long group_id, String user_id, Role newRole) { - super(event_id, group_id, user_id); + super(event_id,+ group_id, user_id); this.newRole = newRole; } + public UpdateRoleEvent(Long group_id, String user_id, Role newRole) { + super(group_id, user_id); + + this.newRole = newRole; + } + } diff --git a/src/main/java/mops/gruppen2/service/ControllerService.java b/src/main/java/mops/gruppen2/service/ControllerService.java index 75f0b78..c19cf53 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -1,6 +1,7 @@ package mops.gruppen2.service; import mops.gruppen2.domain.GroupType; +import mops.gruppen2.domain.Role; import mops.gruppen2.domain.Visibility; import mops.gruppen2.domain.event.*; import mops.gruppen2.security.Account; @@ -20,10 +21,12 @@ public class ControllerService { AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(), account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()); UpdateGroupTitleEvent updateGroupTitleEvent = new UpdateGroupTitleEvent(eventService.checkGroup(), account.getName(), title); UpdateGroupDescriptionEvent updateGroupDescriptionEvent = new UpdateGroupDescriptionEvent(eventService.checkGroup(), account.getName(), beschreibung); + UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(eventService.checkGroup(),account.getName(), Role.ADMIN); eventService.saveEvent(createGroupEvent); eventService.saveEvent(addUserEvent); eventService.saveEvent(updateGroupTitleEvent); eventService.saveEvent(updateGroupDescriptionEvent); + eventService.saveEvent(updateRoleEvent); } } diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html index c912c5a..f6a3827 100644 --- a/src/main/resources/templates/detailsMember.html +++ b/src/main/resources/templates/detailsMember.html @@ -12,10 +12,10 @@