mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-13 00:48:49 +00:00
44 lines
1.4 KiB
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();
|
|
};
|
|
}
|
|
}
|