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:
@ -1,36 +1,24 @@
|
||||
package mops.gruppen2.controllers;
|
||||
|
||||
import javax.annotation.security.RolesAllowed;
|
||||
|
||||
import mops.gruppen2.entities.Gruppe;
|
||||
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.
|
||||
@ -39,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 "create";
|
||||
}
|
||||
|
||||
@GetMapping("/findGroup")
|
||||
public String findGruppe(){
|
||||
return "search";
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
}
|
||||
|
||||
18
src/main/java/mops/gruppen2/entities/Aggregat.java
Normal file
18
src/main/java/mops/gruppen2/entities/Aggregat.java
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,17 +1,21 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import mops.gruppen2.events.CreateGroupEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
|
||||
public class Gruppe {
|
||||
@Id
|
||||
Long id;
|
||||
private String titel;
|
||||
private String beschreibung;
|
||||
public class Gruppe extends Aggregat {
|
||||
long id;
|
||||
String titel;
|
||||
String beschreibung;
|
||||
List<Teilnehmer> teilnehmersList;
|
||||
|
||||
public void applyEvent(CreateGroupEvent event){
|
||||
this.id = event.getId();
|
||||
this.titel = event.getTitel();
|
||||
this.beschreibung = event.getBeschreibung();
|
||||
this.teilnehmersList= 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<Gruppe,Long> {
|
||||
}
|
||||
4
src/main/java/mops/gruppen2/entities/Orga.java
Normal file
4
src/main/java/mops/gruppen2/entities/Orga.java
Normal file
@ -0,0 +1,4 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
public class Orga extends Rolle {
|
||||
}
|
||||
5
src/main/java/mops/gruppen2/entities/Rolle.java
Normal file
5
src/main/java/mops/gruppen2/entities/Rolle.java
Normal file
@ -0,0 +1,5 @@
|
||||
package mops.gruppen2.entities;
|
||||
|
||||
public class Rolle {
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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> {
|
||||
}
|
||||
15
src/main/java/mops/gruppen2/events/CreateGroupEvent.java
Normal file
15
src/main/java/mops/gruppen2/events/CreateGroupEvent.java
Normal 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;
|
||||
}
|
||||
}
|
||||
12
src/main/java/mops/gruppen2/events/Event.java
Normal file
12
src/main/java/mops/gruppen2/events/Event.java
Normal 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;
|
||||
}
|
||||
@ -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> {
|
||||
}
|
||||
28
src/main/java/mops/gruppen2/services/GruppenService.java
Normal file
28
src/main/java/mops/gruppen2/services/GruppenService.java
Normal 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;
|
||||
}
|
||||
}
|
||||
27
src/main/java/mops/gruppen2/services/KeyCloakService.java
Normal file
27
src/main/java/mops/gruppen2/services/KeyCloakService.java
Normal 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());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,10 @@
|
||||
package mops.gruppen2.services;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* Übersetzt und baut
|
||||
*/
|
||||
@Service
|
||||
public class SerializationService {
|
||||
}
|
||||
12
src/test/java/mops/gruppen2/entities/GruppeTest.java
Normal file
12
src/test/java/mops/gruppen2/entities/GruppeTest.java
Normal 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() {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user