SpringSecurityAuditAwareImpl.java
package pk.lucidxpo.ynami.spring.security;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
import java.util.Optional;
import static java.util.Optional.empty;
import static java.util.Optional.of;
import static org.springframework.security.core.context.SecurityContextHolder.getContext;
public class SpringSecurityAuditAwareImpl implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
final Authentication authentication = getContext().getAuthentication();
if (authentication == null ||
!authentication.isAuthenticated() ||
authentication instanceof AnonymousAuthenticationToken) {
return empty();
}
return of(((UserPrincipal) authentication.getPrincipal()).getUsername());
}
}