diff --git a/backend/src/main/java/com/magistr/app/config/DataInitializer.java b/backend/src/main/java/com/magistr/app/config/DataInitializer.java index ef011b3..bb48820 100755 --- a/backend/src/main/java/com/magistr/app/config/DataInitializer.java +++ b/backend/src/main/java/com/magistr/app/config/DataInitializer.java @@ -1,5 +1,8 @@ package com.magistr.app.config; +import com.magistr.app.config.tenant.TenantConfig; +import com.magistr.app.config.tenant.TenantContext; +import com.magistr.app.config.tenant.TenantRoutingDataSource; import com.magistr.app.model.Role; import com.magistr.app.model.User; import com.magistr.app.repository.UserRepository; @@ -18,14 +21,32 @@ public class DataInitializer implements CommandLineRunner { private final UserRepository userRepository; private final BCryptPasswordEncoder passwordEncoder; + private final TenantRoutingDataSource routingDataSource; - public DataInitializer(UserRepository userRepository, BCryptPasswordEncoder passwordEncoder) { + public DataInitializer(UserRepository userRepository, + BCryptPasswordEncoder passwordEncoder, + TenantRoutingDataSource routingDataSource) { this.userRepository = userRepository; this.passwordEncoder = passwordEncoder; + this.routingDataSource = routingDataSource; } @Override public void run(String... args) { + // Создаём admin в каждом тенанте + for (TenantConfig tenant : routingDataSource.getTenantConfigs().values()) { + try { + TenantContext.setCurrentTenant(tenant.getDomain()); + initAdmin(tenant.getDomain()); + } catch (Exception e) { + log.error("Failed to init admin for tenant '{}': {}", tenant.getDomain(), e.getMessage()); + } finally { + TenantContext.clear(); + } + } + } + + private void initAdmin(String tenantDomain) { Optional existing = userRepository.findByUsername("admin"); if (existing.isEmpty()) { @@ -34,17 +55,9 @@ public class DataInitializer implements CommandLineRunner { admin.setPassword(passwordEncoder.encode("admin")); admin.setRole(Role.ADMIN); userRepository.save(admin); - log.info("Created default admin user"); + log.info("[{}] Created default admin user (admin/admin)", tenantDomain); } else { - User admin = existing.get(); - if (!passwordEncoder.matches("admin", admin.getPassword())) { - admin.setPassword(passwordEncoder.encode("admin")); - admin.setRole(Role.ADMIN); - userRepository.save(admin); - log.info("Reset admin password (hash was invalid)"); - } else { - log.info("Admin user already exists with correct password"); - } + log.info("[{}] Admin user already exists", tenantDomain); } } }