1

Merge branch 'Services' into html-gruppe

# Conflicts:
#	src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java
#	src/main/java/mops/gruppen2/entities/Admin.java
#	src/main/java/mops/gruppen2/entities/Gruppe.java
#	src/main/java/mops/gruppen2/entities/GruppeRepository.java
#	src/main/java/mops/gruppen2/entities/Student.java
#	src/main/java/mops/gruppen2/entities/TeilnehmerRepository.java
This commit is contained in:
AndiBuls
2020-03-06 15:04:34 +01:00
17 changed files with 164 additions and 84 deletions

View File

@ -58,7 +58,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.keycloak:keycloak-spring-boot-starter:9.0.0' implementation 'org.keycloak:keycloak-spring-boot-starter:9.0.0'
implementation 'org.keycloak.bom:keycloak-adapter-bom:3.3.0.Final' 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-swagger2', version: '2.7.0'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.7.0' compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.7.0'
compileOnly 'org.projectlombok:lombok' compileOnly 'org.projectlombok:lombok'

View File

@ -1,36 +1,24 @@
package mops.gruppen2.controllers; package mops.gruppen2.controllers;
import javax.annotation.security.RolesAllowed; import mops.gruppen2.services.KeyCloakService;
import mops.gruppen2.entities.Gruppe;
import mops.gruppen2.security.Account;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken; import org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.context.annotation.SessionScope; import org.springframework.web.context.annotation.SessionScope;
@SessionScope import javax.annotation.security.RolesAllowed;
@Controller @Controller
@RequestMapping("/gruppen2")
public class Gruppen2Controller { public class Gruppen2Controller {
/**
* Creates an Account. private final KeyCloakService keyCloakService;
*
* @param token Ein toller token public Gruppen2Controller(KeyCloakService keyCloakService) {
* @return Account with current userdata this.keyCloakService = keyCloakService;
*/
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());
} }
/**Zeigt die index.html an. /**Zeigt die index.html an.
@ -39,26 +27,10 @@ public class Gruppen2Controller {
* @param model tolles model * @param model tolles model
* @return index.html * @return index.html
*/ */
@GetMapping("/")
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"}) @RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"})
@GetMapping("")
public String index(KeycloakAuthenticationToken token, Model model) { public String index(KeycloakAuthenticationToken token, Model model) {
model.addAttribute("account", createAccountFromPrincipal(token)); model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token));
return "index"; return "index";
} }
@PostMapping("/")
public String addGruppe(@ModelAttribute Gruppe gruppe) {
System.out.println(gruppe);
return "redirect:/";
}
@GetMapping("/createGroup")
public String createGruppe(){
return "create";
}
@GetMapping("/findGroup")
public String findGruppe(){
return "search";
}
} }

View File

@ -1,8 +1,4 @@
package mops.gruppen2.entities; package mops.gruppen2.entities;
public class Admin extends Teilnehmer{ public class Admin extends Rolle {
public Admin(String vorname, String nachname) {
super(vorname, nachname);
}
} }

View File

@ -0,0 +1,18 @@
package mops.gruppen2.entities;
import mops.gruppen2.events.Event;
import java.lang.reflect.Method;
public abstract class Aggregat {
public void applyEvent(Event event) {
try {
Method method = this.getClass().getDeclaredMethod("applyEvent", event.getClass());
method.setAccessible(true);
method.invoke(this, event);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -1,17 +1,21 @@
package mops.gruppen2.entities; package mops.gruppen2.entities;
import lombok.Data; import lombok.Data;
import org.springframework.data.annotation.Id; import mops.gruppen2.events.CreateGroupEvent;
import java.util.List; import java.util.List;
@Data @Data
public class Gruppe extends Aggregat {
public class Gruppe { long id;
@Id String titel;
Long id; String beschreibung;
private String titel;
private String beschreibung;
List<Teilnehmer> teilnehmersList; List<Teilnehmer> teilnehmersList;
public void applyEvent(CreateGroupEvent event){
this.id = event.getId();
this.titel = event.getTitel();
this.beschreibung = event.getBeschreibung();
this.teilnehmersList= null;
}
} }

View File

@ -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<Gruppe,Long> {
}

View File

@ -0,0 +1,4 @@
package mops.gruppen2.entities;
public class Orga extends Rolle {
}

View File

@ -0,0 +1,5 @@
package mops.gruppen2.entities;
public class Rolle {
}

View File

@ -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);
}
}

View File

@ -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<Teilnehmer,Long> {
}

View File

@ -0,0 +1,15 @@
package mops.gruppen2.events;
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;
}
}

View File

@ -0,0 +1,12 @@
package mops.gruppen2.events;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class Event {
long id;
long gruppe_id;
long user_id;
}

View File

@ -0,0 +1,7 @@
package mops.gruppen2.repositories;
import mops.gruppen2.events.Event;
import org.springframework.data.repository.CrudRepository;
public interface EventRepository extends CrudRepository<Event, Long> {
}

View File

@ -0,0 +1,28 @@
package mops.gruppen2.services;
import mops.gruppen2.events.CreateGroupEvent;
import mops.gruppen2.events.Event;
import mops.gruppen2.entities.Gruppe;
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<Event> eventList = new ArrayList<>();
eventList.add(createGroupEvent);
Gruppe newGroup = buildGroup(eventList);
System.out.println(newGroup.toString());
}
Gruppe buildGroup(List<Event> eventList){
Gruppe newGroup = new Gruppe();
eventList.forEach(newGroup::applyEvent);
return newGroup;
}
}

View File

@ -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());
}
}

View File

@ -0,0 +1,10 @@
package mops.gruppen2.services;
import org.springframework.stereotype.Service;
/**
* Übersetzt und baut
*/
@Service
public class SerializationService {
}

View File

@ -0,0 +1,12 @@
package mops.gruppen2.entities;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class GruppeTest {
@Test
void applyEvent() {
}
}