From ed81076d64497b0fdac72fdc1a823b05e158a06a Mon Sep 17 00:00:00 2001 From: Markus Kreth Date: Thu, 19 Oct 2023 20:29:08 +0200 Subject: [PATCH] Refactoring --- .../kreth/invoice/security/UserManager.java | 124 +++++++++--------- 1 file changed, 61 insertions(+), 63 deletions(-) diff --git a/src/main/java/de/kreth/invoice/security/UserManager.java b/src/main/java/de/kreth/invoice/security/UserManager.java index cb5ded4..0c0484d 100644 --- a/src/main/java/de/kreth/invoice/security/UserManager.java +++ b/src/main/java/de/kreth/invoice/security/UserManager.java @@ -3,7 +3,6 @@ package de.kreth.invoice.security; import org.keycloak.KeycloakPrincipal; import org.keycloak.KeycloakSecurityContext; import org.keycloak.representations.AccessToken; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; @@ -16,80 +15,79 @@ import de.kreth.invoice.persistence.UserRepository; @Component public class UserManager { - private UserRepository userRepository; + private UserRepository userRepository; - @Autowired - public void setUserRepository(UserRepository userRepository) { - this.userRepository = userRepository; - } - - private AccessToken getAccessToken() { - Authentication authentication = getAuthentication(); - KeycloakPrincipal principal = (KeycloakPrincipal) authentication.getPrincipal(); - - KeycloakSecurityContext context = principal.getKeycloakSecurityContext(); - return context.getToken(); - } + public UserManager(UserRepository userRepository) { + this.userRepository = userRepository; + } - public User getLoggedInUser() { + private AccessToken getAccessToken() { + Authentication authentication = getAuthentication(); + KeycloakPrincipal principal = (KeycloakPrincipal) authentication.getPrincipal(); - AccessToken accessToken = getAccessToken(); - if (accessToken != null) { - User user = userRepository.findByPrincipalId(accessToken.getSubject()); - if (user != null && hasChanges(user, accessToken)) { - save(user); - } - return user; - } - return null; - } - - /** - * Updated user with values from accessToken and returns true if something - * changed. - * - * @param user - * @param accessToken - * @return - */ - private boolean hasChanges(User user, AccessToken accessToken) { - if (user == null) { - return true; + KeycloakSecurityContext context = principal.getKeycloakSecurityContext(); + return context.getToken(); } - boolean result = false; + public User getLoggedInUser() { + + AccessToken accessToken = getAccessToken(); + if (accessToken != null) { + User user = userRepository.findByPrincipalId(accessToken.getSubject()); + if (user != null && hasChanges(user, accessToken)) { + save(user); + } + return user; + } + return null; + } - if (!accessToken.getGivenName().equals(user.getGivenName()) - || !accessToken.getFamilyName().equals(user.getFamilyName()) - || !accessToken.getEmail().equals(user.getEmail())) { - result = true; - user.setPrincipal(accessToken); + /** + * Updated user with values from accessToken and returns true if something + * changed. + * + * @param user + * @param accessToken + * @return + */ + private boolean hasChanges(User user, AccessToken accessToken) { + if (user == null) { + return true; + } + + boolean result = false; + + if (!accessToken.getGivenName().equals(user.getGivenName()) + || !accessToken.getFamilyName().equals(user.getFamilyName()) + || !accessToken.getEmail().equals(user.getEmail())) { + result = true; + user.setPrincipal(accessToken); + } + return result; } - return result; - } - public User save(User entity) { - return userRepository.save(entity); - } + public User save(User entity) { + return userRepository.save(entity); + } - private Authentication getAuthentication() { + private Authentication getAuthentication() { - return SecurityContextHolder.getContext().getAuthentication(); - } + return SecurityContextHolder.getContext().getAuthentication(); + } - public User create() { - AccessToken accessToken = getAccessToken(); + public User create() { + AccessToken accessToken = getAccessToken(); - User user = new User(); - user.setPrincipal(accessToken); - UserBank bank = new UserBank(); - bank.setUser(user); - user.setBank(bank); - UserAdress adress = new UserAdress(); - adress.setUser(user); - user.setAdress(adress); + User user = new User(); + user.setPrincipal(accessToken); + UserBank bank = new UserBank(); + bank.setUser(user); + user.setBank(bank); + UserAdress adress = new UserAdress(); + adress.setUser(user); + user.setAdress(adress); - return user; + return user; - } + } }