diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 50be0f2..307f5ae 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -117,6 +117,15 @@ public class Gruppen2Controller { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @PostMapping("/detailsBeitreten") + public String joinGroup(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException { + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); + Account account = keyCloakService.createAccountFromPrincipal (token); + controllerService.addUser(account,id); + return "redirect:/gruppen2/"; + } + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @GetMapping("/detailsSearch") public String showGroupDetailsNoMember (KeycloakAuthenticationToken token, Model model, @RequestParam (value="id") Long id) throws EventException { diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java b/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java deleted file mode 100644 index 785b901..0000000 --- a/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java +++ /dev/null @@ -1,9 +0,0 @@ -package mops.gruppen2.domain.Exceptions; - -import mops.gruppen2.domain.event.Event; - -public class GroupDoesNotExistException extends EventException { - public GroupDoesNotExistException(String msg) { - super(msg); - } -} diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index 2d9d470..a97845c 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -3,7 +3,10 @@ package mops.gruppen2.domain.event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; /** @@ -24,8 +27,14 @@ public class AddUserEvent extends Event { this.email = email; } - public void apply(Group group) { + public void apply(Group group) throws EventException{ User user = new User(this.user_id, this.givenname, this.familyname, this.email); + + if (group.getMembers().contains(user)){ + throw new UserAlreadyExistsException("Der User existiert bereits"); + } + group.getMembers().add(user); + group.getRoles().put(user_id, Role.MEMBER); } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index d7cff68..1afab84 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,6 +1,8 @@ package mops.gruppen2.domain.event; import lombok.*; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; import mops.gruppen2.domain.Group; @@ -15,7 +17,7 @@ public class DeleteUserEvent extends Event { super(group_id, user_id); } - public void apply(Group group) { + public void apply(Group group) throws EventException { for (User user : group.getMembers()) { if (user.getUser_id().equals(this.user_id)) { group.getMembers().remove(user); @@ -23,5 +25,6 @@ public class DeleteUserEvent extends Event { return; } } + throw new UserNotFoundException("Der User existiert nicht"); } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 6e9406a..17a00f9 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -6,6 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; @@ -31,5 +32,6 @@ public class Event { String user_id; - public void apply(Group group){} + public void apply(Group group) throws EventException { + } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index f115c97..eeea3d9 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -24,7 +24,10 @@ public class UpdateRoleEvent extends Event { this.newRole = newRole; } - public void apply(Group group) { + public void apply(Group group) throws UserNotFoundException{ + if (!group.getRoles().containsKey(user_id)){ + throw new UserNotFoundException("Der User wurde nicht gefunden"); + } group.getRoles().put(this.user_id, this.newRole); } diff --git a/src/main/resources/templates/detailsNoMember.html b/src/main/resources/templates/detailsNoMember.html index 37a3c4a..44f1dfd 100644 --- a/src/main/resources/templates/detailsNoMember.html +++ b/src/main/resources/templates/detailsNoMember.html @@ -29,7 +29,6 @@