package ee.esutoniagodesu.security; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import java.util.Collection; /** * Utility class for Spring Security. */ public final class SecurityUtils { public static Authentication getAuthentication() { SecurityContext securityContext = SecurityContextHolder.getContext(); return securityContext.getAuthentication(); } /** * Get the login of the current user. */ public static String getUserUuid() { Authentication authentication = getAuthentication(); UserDetails springSecurityUser = null; String userName = null; if (authentication != null) { if (authentication.getPrincipal() instanceof UserDetails) { springSecurityUser = (UserDetails) authentication.getPrincipal(); userName = springSecurityUser.getUsername(); } else if (authentication.getPrincipal() instanceof String) { userName = (String) authentication.getPrincipal(); } } return userName; } /** * Check if a user is authenticated. * * @return true if the user is authenticated, false otherwise */ public static boolean isAuthenticated() { SecurityContext securityContext = SecurityContextHolder.getContext(); Collection<? extends GrantedAuthority> authorities = securityContext.getAuthentication().getAuthorities(); if (authorities != null) { for (GrantedAuthority authority : authorities) { if (authority.getAuthority().equals(AuthoritiesConstants.ANONYMOUS)) { return false; } } } return true; } /** * If the current user has a specific security role. */ public static boolean isUserInRole(String role) { Authentication authentication = getAuthentication(); if (authentication != null) { if (authentication.getPrincipal() instanceof UserDetails) { UserDetails springSecurityUser = (UserDetails) authentication.getPrincipal(); for (GrantedAuthority authority : springSecurityUser.getAuthorities()) { if (authority.getAuthority().equals(role)) return true; } return false; } } return false; } }