Files
erp-imprimelibros/src/main/java/com/imprimelibros/erp/config/JpaAuditConfig.java

44 lines
1.4 KiB
Java

// JpaAuditConfig.java
package com.imprimelibros.erp.config;
import java.util.Optional;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import com.imprimelibros.erp.users.User;
import com.imprimelibros.erp.users.UserDao;
@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorAware")
public class JpaAuditConfig {
@Bean
public AuditorAware<User> auditorAware(UserDao userDao) {
return () -> {
var auth = SecurityContextHolder.getContext().getAuthentication();
if (auth == null || !auth.isAuthenticated())
return Optional.empty();
Object principal = auth.getPrincipal();
if (principal instanceof User u)
return Optional.of(u);
if (principal instanceof UserDetails ud) {
return userDao.findByUserNameIgnoreCase(ud.getUsername());
}
if (principal instanceof String username && !"anonymousUser".equals(username)) {
return userDao.findByUserNameIgnoreCase(username);
}
return Optional.empty();
};
}
}