1 package fr.tiogars.inception.config;
2
3 import java.util.Optional;
4
5 import org.springframework.data.domain.AuditorAware;
6 import org.springframework.security.authentication.AnonymousAuthenticationToken;
7 import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
8 import org.springframework.security.core.Authentication;
9 import org.springframework.security.core.context.SecurityContextHolder;
10 import org.springframework.stereotype.Component;
11
12
13 @Component
14 public class SecurityAuditorAware implements AuditorAware<String> {
15
16 @Override
17 public Optional<String> getCurrentAuditor() {
18 Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
19 if (authentication == null || !authentication.isAuthenticated()
20 || authentication instanceof AnonymousAuthenticationToken) {
21 throw new AuthenticationCredentialsNotFoundException("An authenticated user is required for auditing");
22 }
23 return Optional.of(authentication.getName());
24 }
25 }