1 package pk.lucidxpo.ynami.spring.security; 2 3 import org.springframework.data.domain.AuditorAware; 4 import org.springframework.security.authentication.AnonymousAuthenticationToken; 5 import org.springframework.security.core.Authentication; 6 7 import java.util.Optional; 8 9 import static java.util.Optional.empty; 10 import static java.util.Optional.of; 11 import static org.springframework.security.core.context.SecurityContextHolder.getContext; 12 13 public class SpringSecurityAuditAwareImpl implements AuditorAware<String> { 14 @Override 15 public Optional<String> getCurrentAuditor() { 16 final Authentication authentication = getContext().getAuthentication(); 17 if (authentication == null || 18 !authentication.isAuthenticated() || 19 authentication instanceof AnonymousAuthenticationToken) { 20 return empty(); 21 } 22 return of(((UserPrincipal) authentication.getPrincipal()).getUsername()); 23 } 24 }