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 }