diff --git a/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java b/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java index 06b9f5f..397292c 100644 --- a/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java +++ b/infrastructure/src/main/java/com/dh7789dev/xpeditis/repository/AuthenticationJwtRepository.java @@ -73,9 +73,22 @@ public class AuthenticationJwtRepository implements AuthenticationRepository { userEntity.setEnabled(true); if(request.getCompanyName() != null && !request.getCompanyName().isEmpty()){ userEntity.setRole(Role.ADMIN); - CompanyEntity companyEntity = new CompanyEntity(); - companyEntity.setName(request.getCompanyName()); - companyDao.save(companyEntity); + + // Rechercher l'entreprise existante ou en créer une nouvelle + CompanyEntity companyEntity = companyDao.findByName(request.getCompanyName()) + .orElseGet(() -> { + log.info("Creating new company: {}", request.getCompanyName()); + CompanyEntity newCompany = new CompanyEntity(); + newCompany.setName(request.getCompanyName()); + if (request.getCompanyCountry() != null && !request.getCompanyCountry().isEmpty()) { + newCompany.setCountry(request.getCompanyCountry()); + } + return companyDao.save(newCompany); + }); + + // Lier l'utilisateur à l'entreprise + userEntity.setCompany(companyEntity); + log.info("User {} linked to company: {}", request.getUsername(), companyEntity.getName()); } else { userEntity.setRole(Role.ADMIN); }