diff --git a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java index c9f1d81..eea8b70 100644 --- a/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java +++ b/src/main/java/mops/gruppen2/controllers/Gruppen2Controller.java @@ -1,36 +1,24 @@ package mops.gruppen2.controllers; -import javax.annotation.security.RolesAllowed; -import mops.gruppen2.security.Account; -import mops.gruppen2.services.GruppenService; -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.RequestMapping; import org.springframework.web.context.annotation.SessionScope; -@SessionScope +import javax.annotation.security.RolesAllowed; + @Controller +@RequestMapping("/gruppen2") public class Gruppen2Controller { - @Autowired - GruppenService gruppenService; - /** - * 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,10 +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"; } } 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()); + } +}