diff --git a/build.gradle b/build.gradle index 76c2a06..15f22d4 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,6 @@ plugins { spotbugs{ ignoreFailures = true effort = "max" - reportLevel = "high" toolVersion = '4.0.0-RC1' } @@ -59,7 +58,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.keycloak:keycloak-spring-boot-starter:9.0.0' implementation 'org.keycloak.bom:keycloak-adapter-bom:3.3.0.Final' - implementation 'mops:styleguide:2.0.1' + implementation 'mops:styleguide:2.1.0' compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.7.0' compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.7.0' compileOnly 'org.projectlombok:lombok' diff --git a/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java b/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java new file mode 100644 index 0000000..06d432d --- /dev/null +++ b/src/main/java/mops/gruppen2/Events/CreateGroupEvent.java @@ -0,0 +1,17 @@ +package mops.gruppen2.Events; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; + +@Getter +public class CreateGroupEvent extends Event{ + String titel; + String beschreibung; + + public CreateGroupEvent(Long id, Long gruppe_id, Long user_id, String titel,String beschreibung) { + super(id, gruppe_id, user_id); + this.titel = titel; + this.beschreibung = beschreibung; + } +} diff --git a/src/main/java/mops/gruppen2/Events/Event.java b/src/main/java/mops/gruppen2/Events/Event.java new file mode 100644 index 0000000..203f08f --- /dev/null +++ b/src/main/java/mops/gruppen2/Events/Event.java @@ -0,0 +1,15 @@ +package mops.gruppen2.Events; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.data.annotation.Id; + +@Getter +@AllArgsConstructor +public class Event { + @Id + Long id; + Long gruppe_id; + Long user_id; + +} diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index d693b24..eea8b70 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -1,38 +1,24 @@ package mops.gruppen2.controllers; -import javax.annotation.security.RolesAllowed; - -import mops.gruppen2.entities.Gruppe; -import mops.gruppen2.entities.GruppeRepository; -import mops.gruppen2.entities.Teilnehmer; -import mops.gruppen2.security.Account; -import org.keycloak.KeycloakPrincipal; +import mops.gruppen2.services.KeyCloakService; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.context.annotation.SessionScope; -@SessionScope +import javax.annotation.security.RolesAllowed; + @Controller +@RequestMapping("/gruppen2") public class Gruppen2Controller { - /** - * Creates an Account. - * - * @param token Ein toller token - * @return Account with current userdata - */ - private Account createAccountFromPrincipal(KeycloakAuthenticationToken token) { - KeycloakPrincipal principal = (KeycloakPrincipal) token.getPrincipal(); - return new Account( - principal.getName(), - principal.getKeycloakSecurityContext().getIdToken().getEmail(), - null, - principal.getKeycloakSecurityContext().getIdToken().getGivenName(), - principal.getKeycloakSecurityContext().getIdToken().getFamilyName(), - token.getAccount().getRoles()); + + private final KeyCloakService keyCloakService; + + public Gruppen2Controller(KeyCloakService keyCloakService) { + this.keyCloakService = keyCloakService; } /**Zeigt die index.html an. @@ -41,26 +27,10 @@ public class Gruppen2Controller { * @param model tolles model * @return index.html */ - @GetMapping("/") @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) + @GetMapping("") public String index(KeycloakAuthenticationToken token, Model model) { - model.addAttribute("account", createAccountFromPrincipal(token)); + model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token)); return "index"; } - - @PostMapping("/") - public String addGruppe(@ModelAttribute Gruppe gruppe) { - System.out.println(gruppe); - return "redirect:/"; - } - - @GetMapping("/createGroup") - public String createGruppe(){ - return "test"; - } - - @GetMapping("/findGroup") - public String findGruppe(){ - return "search"; - } } diff --git a/src/main/java/mops/gruppen2/entities/Admin.java b/src/main/java/mops/gruppen2/entities/Admin.java index a50a14f..dcc21d8 100644 --- a/src/main/java/mops/gruppen2/entities/Admin.java +++ b/src/main/java/mops/gruppen2/entities/Admin.java @@ -1,8 +1,4 @@ package mops.gruppen2.entities; -public class Admin extends Teilnehmer{ - - public Admin(String vorname, String nachname) { - super(vorname, nachname); - } +public class Admin extends Rolle { } diff --git a/src/main/java/mops/gruppen2/entities/Gruppe.java b/src/main/java/mops/gruppen2/entities/Gruppe.java index 801898b..33f163d 100644 --- a/src/main/java/mops/gruppen2/entities/Gruppe.java +++ b/src/main/java/mops/gruppen2/entities/Gruppe.java @@ -1,17 +1,29 @@ package mops.gruppen2.entities; import lombok.Data; +import mops.gruppen2.Events.CreateGroupEvent; +import mops.gruppen2.Events.Event; import org.springframework.data.annotation.Id; import java.util.List; @Data - public class Gruppe { @Id Long id; - private String titel; - private String beschreibung; + String titel; + String beschreibung; List teilnehmersList; + public void applyEvent(Event event){ + + } + + public void applyEvent(CreateGroupEvent event){ + this.id = event.getId(); + this.titel = event.getTitel(); + this.beschreibung = event.getBeschreibung(); + this.teilnehmersList= null; + } + } diff --git a/src/main/java/mops/gruppen2/entities/GruppeRepository.java b/src/main/java/mops/gruppen2/entities/GruppeRepository.java deleted file mode 100644 index 988fcd2..0000000 --- a/src/main/java/mops/gruppen2/entities/GruppeRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package mops.gruppen2.entities; - -import org.springframework.data.repository.CrudRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface GruppeRepository extends CrudRepository { -} diff --git a/src/main/java/mops/gruppen2/entities/Orga.java b/src/main/java/mops/gruppen2/entities/Orga.java new file mode 100644 index 0000000..ad86b27 --- /dev/null +++ b/src/main/java/mops/gruppen2/entities/Orga.java @@ -0,0 +1,4 @@ +package mops.gruppen2.entities; + +public class Orga extends Rolle { +} diff --git a/src/main/java/mops/gruppen2/entities/Rolle.java b/src/main/java/mops/gruppen2/entities/Rolle.java new file mode 100644 index 0000000..1a7bb04 --- /dev/null +++ b/src/main/java/mops/gruppen2/entities/Rolle.java @@ -0,0 +1,5 @@ +package mops.gruppen2.entities; + +public class Rolle { + +} diff --git a/src/main/java/mops/gruppen2/entities/Student.java b/src/main/java/mops/gruppen2/entities/Student.java deleted file mode 100644 index e1804ef..0000000 --- a/src/main/java/mops/gruppen2/entities/Student.java +++ /dev/null @@ -1,14 +0,0 @@ -package mops.gruppen2.entities; - -import lombok.Data; -import org.springframework.data.annotation.Id; - -import java.util.List; - -public class Student extends Teilnehmer{ - - public Student(String vorname, String nachname) { - super(vorname, nachname); - } - -} diff --git a/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java b/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java deleted file mode 100644 index a0bf398..0000000 --- a/src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package mops.gruppen2.entities; - -import org.springframework.data.repository.CrudRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface TeilnehmerRepository extends CrudRepository { -} diff --git a/src/main/java/mops/gruppen2/repositories/EventRepository.java b/src/main/java/mops/gruppen2/repositories/EventRepository.java new file mode 100644 index 0000000..9a8d872 --- /dev/null +++ b/src/main/java/mops/gruppen2/repositories/EventRepository.java @@ -0,0 +1,7 @@ +package mops.gruppen2.repositories; + +import mops.gruppen2.Events.Event; +import org.springframework.data.repository.CrudRepository; + +public interface EventRepository extends CrudRepository { +} diff --git a/src/main/java/mops/gruppen2/services/GruppenService.java b/src/main/java/mops/gruppen2/services/GruppenService.java new file mode 100644 index 0000000..2c67671 --- /dev/null +++ b/src/main/java/mops/gruppen2/services/GruppenService.java @@ -0,0 +1,29 @@ +package mops.gruppen2.services; + +import mops.gruppen2.Events.CreateGroupEvent; +import mops.gruppen2.Events.Event; +import mops.gruppen2.entities.Gruppe; +import mops.gruppen2.repositories.EventRepository; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class GruppenService { + + CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,1L,"hello", "foo"); + + public GruppenService(){ + List eventList = new ArrayList<>(); + eventList.add(createGroupEvent); + Gruppe newGroup = buildGroup(eventList); + System.out.println(newGroup.toString()); + } + + Gruppe buildGroup(List eventList){ + Gruppe newGroup = new Gruppe(); + eventList.forEach(newGroup::applyEvent); + return newGroup; + } +} diff --git a/src/main/java/mops/gruppen2/services/KeyCloakService.java b/src/main/java/mops/gruppen2/services/KeyCloakService.java new file mode 100644 index 0000000..99d2548 --- /dev/null +++ b/src/main/java/mops/gruppen2/services/KeyCloakService.java @@ -0,0 +1,27 @@ +package mops.gruppen2.services; + +import mops.gruppen2.security.Account; +import org.keycloak.KeycloakPrincipal; +import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; +import org.springframework.stereotype.Service; + +@Service +public class KeyCloakService { + + /** + * Creates an Account. + * + * @param token Ein toller token + * @return Account with current userdata + */ + public Account createAccountFromPrincipal(KeycloakAuthenticationToken token) { + KeycloakPrincipal principal = (KeycloakPrincipal) token.getPrincipal(); + return new Account( + principal.getName(), + principal.getKeycloakSecurityContext().getIdToken().getEmail(), + null, + principal.getKeycloakSecurityContext().getIdToken().getGivenName(), + principal.getKeycloakSecurityContext().getIdToken().getFamilyName(), + token.getAccount().getRoles()); + } +}