diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 96ec538..12d397e 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -2,22 +2,21 @@ package mops.gruppen2.controller; import mops.gruppen2.config.Gruppen2Config; import mops.gruppen2.domain.Exceptions.EventException; -import mops.gruppen2.domain.GroupType; +import mops.gruppen2.domain.Group; +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; 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; +import java.util.Set; @Controller @RequestMapping("/gruppen2") @@ -83,4 +82,20 @@ 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 { + 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); + model.addAttribute("role",role); + return "detailsMember"; + } + 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 index ae9c4f3..ca35f5b 100644 --- a/src/main/java/mops/gruppen2/domain/apiWrapper/UpdatedGroupRequestMapper.java +++ b/src/main/java/mops/gruppen2/domain/apiWrapper/UpdatedGroupRequestMapper.java @@ -13,4 +13,4 @@ import java.util.List; public class UpdatedGroupRequestMapper { private Long status; private List groupList; -} +} \ No newline at end of file diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index 1627f08..7d5f95c 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -17,9 +17,10 @@ public class UpdateRoleEvent extends Event { 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 10e0f7b..a1ca2c3 100644 --- a/src/main/java/mops/gruppen2/service/ControllerService.java +++ b/src/main/java/mops/gruppen2/service/ControllerService.java @@ -33,7 +33,8 @@ public class ControllerService { new AddUserEvent(eventService.checkGroup(), account.getName(),account.getGivenname(),account.getFamilyname(),account.getEmail()), new UpdateRoleEvent(eventService.checkGroup(), account.getName(), Role.ADMIN), new UpdateGroupTitleEvent(eventService.checkGroup(), account.getName(), title), - new UpdateGroupDescriptionEvent(eventService.checkGroup(), account.getName(), description)); + new UpdateGroupDescriptionEvent(eventService.checkGroup(), account.getName(), description), + new UpdateRoleEvent(eventService.checkGroup(),account.getName(), Role.ADMIN)); eventService.saveEventList(eventList); } 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); + } } diff --git a/src/main/resources/templates/create.html b/src/main/resources/templates/create.html index 00908f0..7b6080d 100644 --- a/src/main/resources/templates/create.html +++ b/src/main/resources/templates/create.html @@ -3,7 +3,7 @@ th:replace="~{mopslayout :: html(name='Gruppenbildung', headcontent=~{:: headcontent}, navigation=~{:: navigation}, bodycontent=~{:: bodycontent})}"> - Name des Subsystems + Gruppenerstellung @@ -37,7 +37,7 @@ -
+
diff --git a/src/main/resources/templates/detailsMember.html b/src/main/resources/templates/detailsMember.html new file mode 100644 index 0000000..0f58b32 --- /dev/null +++ b/src/main/resources/templates/detailsMember.html @@ -0,0 +1,53 @@ + + + + + Gruppendetails + + + + + +
+ +
+
+
+
+
+

+

+ Private Gruppe + Öffentliche Gruppe +

+

+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html new file mode 100644 index 0000000..f351207 --- /dev/null +++ b/src/main/resources/templates/detailsNoMember.html @@ -0,0 +1,31 @@ + + + + + Gruppendetails + + + + + +
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 822ebf1..02d560d 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -3,7 +3,7 @@ th:replace="~{mopslayout :: html(name='Gruppenbildung', headcontent=~{:: headcontent}, navigation=~{:: navigation}, bodycontent=~{:: bodycontent})}"> - Name des Subsystems + Eigene Gruppen @@ -31,7 +31,7 @@

- +

diff --git a/src/main/resources/templates/search.html b/src/main/resources/templates/search.html index 6efe4e7..8f5357f 100644 --- a/src/main/resources/templates/search.html +++ b/src/main/resources/templates/search.html @@ -3,7 +3,7 @@ th:replace="~{mopslayout :: html(name='Gruppenbildung', headcontent=~{:: headcontent}, navigation=~{:: navigation}, bodycontent=~{:: bodycontent})}"> - Name des Subsystems + Suche