// 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 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(); }; } }