
ru.mynewtons.starter.oauth2.config.security.audit.UsernameAuditorAware Maven / Gradle / Ivy
The newest version!
package ru.mynewtons.starter.oauth2.config.security.audit;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Optional;
import static java.util.Optional.of;
@Slf4j
public class UsernameAuditorAware implements AuditorAware {
@Override
public Optional getCurrentAuditor() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null || !authentication.isAuthenticated()) {
return Optional.empty();
}
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal instanceof String) {
return Optional.of((String) principal);
}
if (principal instanceof User) {
User user = (User) principal;
return Optional.of(user.getUsername());
}
if (principal instanceof UserDetails) {
UserDetails userDetails = (UserDetails) principal;
return Optional.of(userDetails.getUsername());
}
if (principal instanceof Authentication) {
Authentication auth = (Authentication) principal;
return Optional.of(auth.getName());
}
log.warn(" Object principal is not String/org.springframework.security.core.userdetails.User/Authentication");
return Optional.empty();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy