diff --git a/backend/src/main/java/com/rit/canteen/sales/service/DatabaseSeeder.java b/backend/src/main/java/com/rit/canteen/sales/service/DatabaseSeeder.java index 8d020ecb..982dc7a5 100644 --- a/backend/src/main/java/com/rit/canteen/sales/service/DatabaseSeeder.java +++ b/backend/src/main/java/com/rit/canteen/sales/service/DatabaseSeeder.java @@ -9,6 +9,7 @@ import com.rit.canteen.sales.repository.ProductRepository; import com.rit.canteen.sales.repository.StallRepository; import com.rit.canteen.sales.repository.SystemUserRepository; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @@ -39,6 +40,12 @@ public class DatabaseSeeder implements CommandLineRunner { @Autowired private JdbcTemplate jdbcTemplate; + @Value("${app.master.username:admin}") + private String masterUsername; + + @Value("${app.master.password:admin}") + private String masterPassword; + @Override public void run(String... args) throws Exception { repairStallsSchema(); @@ -294,19 +301,29 @@ public class DatabaseSeeder implements CommandLineRunner { } private void seedMasterUser() { - Optional existingAdmin = systemUserRepository.findByEmail("admin"); + String targetUsername = (masterUsername != null && !masterUsername.isBlank()) ? masterUsername : "admin"; + String targetPassword = (masterPassword != null && !masterPassword.isBlank()) ? masterPassword : "admin"; + + Optional existingAdmin = systemUserRepository.findByEmail(targetUsername); if (existingAdmin.isEmpty()) { SystemUser admin = new SystemUser(); admin.setName("Admin Master"); - admin.setEmail("admin"); - admin.setPassword(passwordEncoder.encode("admin")); + admin.setEmail(targetUsername); + admin.setPassword(passwordEncoder.encode(targetPassword)); admin.setRole("MASTER"); admin.setPermissions(List.of("dashboard", "sale", "customers", "purchases", "inventory", "expense", "reports", "stores", "table", "wallet", "promotions", "feedback")); admin.setViewOnly(false); systemUserRepository.save(admin); - System.out.println(">>> SEEDED ADMIN MASTER USER (username: admin, password: admin)"); + System.out.println(">>> SEEDED ADMIN MASTER USER (username: " + targetUsername + ")"); } else { - System.out.println(">>> ADMIN MASTER USER EXISTS. Skipping admin user creation."); + SystemUser admin = existingAdmin.get(); + admin.setPassword(passwordEncoder.encode(targetPassword)); + admin.setRole("MASTER"); + if (admin.getPermissions() == null || admin.getPermissions().isEmpty()) { + admin.setPermissions(List.of("dashboard", "sale", "customers", "purchases", "inventory", "expense", "reports", "stores", "table", "wallet", "promotions", "feedback")); + } + systemUserRepository.save(admin); + System.out.println(">>> VERIFIED & UPDATED ADMIN MASTER USER credentials for: " + targetUsername); } } }