diff --git a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java index 842870d..217231b 100644 --- a/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controller/Gruppen2Controller.java @@ -2,19 +2,16 @@ package mops.gruppen2.controller; import mops.gruppen2.config.Gruppen2Config; import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.GroupNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; -import mops.gruppen2.domain.Visibility; -import mops.gruppen2.domain.event.CreateGroupEvent; 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.client.RestTemplate; import org.springframework.web.context.annotation.SessionScope; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.server.ResponseStatusException; @@ -125,7 +122,7 @@ public class Gruppen2Controller { @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) @GetMapping("/details") - public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException, ResponseStatusException { + public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws ResponseStatusException, EventException { model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); Group group = userService.getGroupById(id); Account account = keyCloakService.createAccountFromPrincipal(token); @@ -135,7 +132,7 @@ public class Gruppen2Controller { model.addAttribute("role", group.getRoles().get(user.getUser_id())); return "detailsMember"; } - throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); + throw new GroupNotFoundException(); } @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) @@ -156,7 +153,7 @@ public class Gruppen2Controller { model.addAttribute("group", group); return "detailsNoMember"; } - throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); + throw new GroupNotFoundException(); } @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) @@ -168,10 +165,10 @@ public class Gruppen2Controller { model.addAttribute("group", group); return "redirect:/gruppen2/detailsSearch?id=" + group.getId(); } - throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Group not found"); + throw new GroupNotFoundException(); } - @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"}) + @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @PostMapping("/leaveGroup") public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam(value = "group_id") Long id) { Account account = keyCloakService.createAccountFromPrincipal(token); @@ -181,6 +178,6 @@ public class Gruppen2Controller { @GetMapping("*") public String defaultLink() { - return "errorRenameLater"; + return "error"; } } diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/EventException.java b/src/main/java/mops/gruppen2/domain/Exceptions/EventException.java index 20bb176..e562f51 100644 --- a/src/main/java/mops/gruppen2/domain/Exceptions/EventException.java +++ b/src/main/java/mops/gruppen2/domain/Exceptions/EventException.java @@ -1,10 +1,13 @@ package mops.gruppen2.domain.Exceptions; -public class EventException extends Exception { +import org.springframework.http.HttpStatus; +import org.springframework.web.server.ResponseStatusException; + +public class EventException extends ResponseStatusException { private String msg; - public EventException(String msg) { - this.msg = msg; + public EventException(String msg, HttpStatus status) { + super(status, msg); } @Override diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/GroupIdMismatchException.java b/src/main/java/mops/gruppen2/domain/Exceptions/GroupIdMismatchException.java new file mode 100644 index 0000000..3d98e69 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/Exceptions/GroupIdMismatchException.java @@ -0,0 +1,13 @@ +package mops.gruppen2.domain.Exceptions; + +import org.springframework.http.HttpStatus; + +public class GroupIdMismatchException extends EventException { + public GroupIdMismatchException(String msg) { + super("Falsche Gruppe für Event." + " (" + msg + ")", HttpStatus.INTERNAL_SERVER_ERROR); + } + + public GroupIdMismatchException() { + super("", HttpStatus.INTERNAL_SERVER_ERROR); + } +} diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/GroupNotFoundException.java b/src/main/java/mops/gruppen2/domain/Exceptions/GroupNotFoundException.java new file mode 100644 index 0000000..ca45554 --- /dev/null +++ b/src/main/java/mops/gruppen2/domain/Exceptions/GroupNotFoundException.java @@ -0,0 +1,13 @@ +package mops.gruppen2.domain.Exceptions; + +import org.springframework.http.HttpStatus; + +public class GroupNotFoundException extends EventException { + public GroupNotFoundException(String msg) { + super(msg, HttpStatus.NOT_FOUND); + } + + public GroupNotFoundException() { + super("Gruppe nicht gefunden.", HttpStatus.NOT_FOUND); + } +} diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/UserAlreadyExistsException.java b/src/main/java/mops/gruppen2/domain/Exceptions/UserAlreadyExistsException.java index 8896356..07b593e 100644 --- a/src/main/java/mops/gruppen2/domain/Exceptions/UserAlreadyExistsException.java +++ b/src/main/java/mops/gruppen2/domain/Exceptions/UserAlreadyExistsException.java @@ -1,7 +1,13 @@ package mops.gruppen2.domain.Exceptions; +import org.springframework.http.HttpStatus; + public class UserAlreadyExistsException extends EventException { - public UserAlreadyExistsException(String msg){ - super(msg); + public UserAlreadyExistsException(String msg) { + super(msg, HttpStatus.INTERNAL_SERVER_ERROR); + } + + public UserAlreadyExistsException() { + super("Der User existiert bereits.", HttpStatus.INTERNAL_SERVER_ERROR); } } diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/UserNotFoundException.java b/src/main/java/mops/gruppen2/domain/Exceptions/UserNotFoundException.java index f7e0080..fd10bb9 100644 --- a/src/main/java/mops/gruppen2/domain/Exceptions/UserNotFoundException.java +++ b/src/main/java/mops/gruppen2/domain/Exceptions/UserNotFoundException.java @@ -1,7 +1,13 @@ package mops.gruppen2.domain.Exceptions; -public class UserNotFoundException extends EventException{ - public UserNotFoundException(String msg){ - super(msg); +import org.springframework.http.HttpStatus; + +public class UserNotFoundException extends EventException { + public UserNotFoundException(String msg) { + super(msg, HttpStatus.NOT_FOUND); + } + + public UserNotFoundException() { + super("Der User wurde nicht gefunden.", HttpStatus.NOT_FOUND); } } diff --git a/src/main/java/mops/gruppen2/domain/ProductSwaggerExample.java b/src/main/java/mops/gruppen2/domain/ProductSwaggerExample.java deleted file mode 100644 index 14f50dd..0000000 --- a/src/main/java/mops/gruppen2/domain/ProductSwaggerExample.java +++ /dev/null @@ -1,12 +0,0 @@ -package mops.gruppen2.domain; - -import lombok.Value; - -// @ApiModelProperty -@Value -public class ProductSwaggerExample { - - // @ApiModelProperty - String name; - String description; -} diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index a97845c..9f36bce 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -27,11 +27,12 @@ public class AddUserEvent extends Event { this.email = email; } - public void apply(Group group) throws EventException{ + @Override + public void applyEvent(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"); + if (group.getMembers().contains(user)) { + throw new UserAlreadyExistsException(); } group.getMembers().add(user); diff --git a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java index f5f49b1..878f2b6 100644 --- a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java @@ -15,8 +15,6 @@ public class CreateGroupEvent extends Event { private Long groupParent; private GroupType groupType; - - public CreateGroupEvent(Long group_id, String user_id, Long parent, GroupType type, Visibility visibility) { super(group_id, user_id); this.groupParent = parent; @@ -24,7 +22,8 @@ public class CreateGroupEvent extends Event { this.groupVisibility = visibility; } - public void apply(Group group) { + @Override + public void applyEvent(Group group) { group.setId(this.group_id); group.setParent(this.groupParent); group.setType(this.groupType); diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java index 4b8a6e3..0640d8d 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteGroupEvent.java @@ -13,7 +13,7 @@ public class DeleteGroupEvent extends Event { } @Override - public void apply(Group group) { + public void applyEvent(Group group) { group.getRoles().clear(); group.getMembers().clear(); group.setTitle(null); diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 1afab84..00c81ca 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,11 +1,11 @@ package mops.gruppen2.domain.event; -import lombok.*; +import lombok.Getter; +import lombok.NoArgsConstructor; 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; /** * Entfernt ein einzelnes Mitglied einer Gruppe. @@ -17,7 +17,8 @@ public class DeleteUserEvent extends Event { super(group_id, user_id); } - public void apply(Group group) throws EventException { + @Override + public void applyEvent(Group group) throws EventException { for (User user : group.getMembers()) { if (user.getUser_id().equals(this.user_id)) { group.getMembers().remove(user); diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 17a00f9..cac4b9d 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -31,7 +31,22 @@ public class Event { Long group_id; String user_id; - public void apply(Group group) throws EventException { + checkGroupIdMatch(group.getId()); + applyEvent(group); + } + + protected void applyEvent(Group group) throws EventException { + + } + + private void checkGroupIdMatch(Long group_id) { + if (this.group_id.equals(group_id)) { + return; + } + + //throw new GroupIdMismatchException(this.getClass().toString()); + System.out.println(group_id); + System.out.println(this.group_id); } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java index 83d4e88..8024365 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java @@ -19,7 +19,8 @@ public class UpdateGroupDescriptionEvent extends Event { this.newGroupDescription = newGroupDescription; } - public void apply(Group group) { + @Override + public void applyEvent(Group group) { group.setDescription(this.newGroupDescription); } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java index dffb13d..7f2f1d1 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java @@ -19,7 +19,8 @@ public class UpdateGroupTitleEvent extends Event { this.newGroupTitle = newGroupTitle; } - public void apply(Group group) { + @Override + public void applyEvent(Group group) { group.setTitle(this.newGroupTitle); } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index eeea3d9..64b488e 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -1,13 +1,11 @@ package mops.gruppen2.domain.event; -import lombok.*; -import mops.gruppen2.domain.Exceptions.EventException; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Role; -import mops.gruppen2.domain.User; - -import java.util.Optional; /** * Aktualisiert die Gruppenrolle eines Teilnehmers. @@ -18,15 +16,16 @@ import java.util.Optional; public class UpdateRoleEvent extends Event { Role newRole; - + public UpdateRoleEvent(Long group_id, String user_id, Role newRole) { super(group_id, user_id); this.newRole = newRole; } - public void apply(Group group) throws UserNotFoundException{ - if (!group.getRoles().containsKey(user_id)){ - throw new UserNotFoundException("Der User wurde nicht gefunden"); + @Override + public void applyEvent(Group group) throws UserNotFoundException { + if (!group.getRoles().containsKey(user_id)) { + throw new UserNotFoundException(); } group.getRoles().put(this.user_id, this.newRole); } diff --git a/src/main/java/mops/gruppen2/security/SecurityConfig.java b/src/main/java/mops/gruppen2/security/SecurityConfig.java index 8816b24..df96dd7 100644 --- a/src/main/java/mops/gruppen2/security/SecurityConfig.java +++ b/src/main/java/mops/gruppen2/security/SecurityConfig.java @@ -6,11 +6,7 @@ import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticatio import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter; import org.keycloak.representations.AccessToken; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; -import org.springframework.context.annotation.ScopedProxyMode; +import org.springframework.context.annotation.*; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration; diff --git a/src/main/java/mops/gruppen2/service/UserService.java b/src/main/java/mops/gruppen2/service/UserService.java index 74a9ca4..681b3c6 100644 --- a/src/main/java/mops/gruppen2/service/UserService.java +++ b/src/main/java/mops/gruppen2/service/UserService.java @@ -1,6 +1,7 @@ package mops.gruppen2.service; import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.GroupNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; import mops.gruppen2.domain.event.Event; @@ -39,7 +40,12 @@ public class UserService { 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); + + try { + List events = groupService.getGroupEvents(group_ids); + return groupService.projectEventList(events).get(0); + } catch (IndexOutOfBoundsException e) { + throw new GroupNotFoundException("Gruppe nicht gefunden"); + } } } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index ee53a97..bc79d39 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -18,4 +18,5 @@ keycloak.verify-token-audience=true keycloak.use-resource-role-mappings=true keycloak.autodetect-bearer-only=true -keycloak.confidential-port= 443 +keycloak.confidential-port=443 +server.error.include-stacktrace=always diff --git a/src/main/resources/templates/error.html b/src/main/resources/templates/error.html new file mode 100644 index 0000000..5ea8655 --- /dev/null +++ b/src/main/resources/templates/error.html @@ -0,0 +1,34 @@ + + + + + + + + + Seite nicht gefunden + + +
+
+
+

UPSI

+

Da ist wohl etwas schiefgelaufen :(


+
+
+
+
+
+

+
+
+

+
+
+

Zurück +

+
+
+ + diff --git a/src/main/resources/templates/errorRenameLater.html b/src/main/resources/templates/errorRenameLater.html deleted file mode 100644 index 01fbadc..0000000 --- a/src/main/resources/templates/errorRenameLater.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - Error - - -
-
-

Da ist etwas schiefgelaufen!

-

Die Seite, nach der du suchst, scheint nicht zu existieren.

-
- -
-
-
- - \ No newline at end of file