View Javadoc
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  }