diff --git a/src/main/java/com/petshop/backend/config/DataInitializer.java b/src/main/java/com/petshop/backend/config/DataInitializer.java index 367ecc38..0d9c9395 100644 --- a/src/main/java/com/petshop/backend/config/DataInitializer.java +++ b/src/main/java/com/petshop/backend/config/DataInitializer.java @@ -19,23 +19,38 @@ public class DataInitializer implements CommandLineRunner { @Override public void run(String... args) { + System.out.println("==== DataInitializer: Starting user creation ===="); + if (userRepository.findByUsername("admin").isEmpty()) { + System.out.println("Creating admin user..."); User admin = new User(); admin.setUsername("admin"); admin.setPassword(passwordEncoder.encode("admin123")); + admin.setEmail("admin@petshop.com"); + admin.setFullName("Admin User"); admin.setRole(User.Role.ADMIN); userRepository.save(admin); + System.out.println("Admin user created successfully"); + } else { + System.out.println("Admin user already exists"); } if (userRepository.findByUsername("staff").isEmpty()) { + System.out.println("Creating staff user..."); User staff = new User(); staff.setUsername("staff"); staff.setPassword(passwordEncoder.encode("staff123")); + staff.setEmail("staff@petshop.com"); + staff.setFullName("Staff User"); staff.setRole(User.Role.STAFF); userRepository.save(staff); + System.out.println("Staff user created successfully"); + } else { + System.out.println("Staff user already exists"); } if (userRepository.findByUsername("customer").isEmpty()) { + System.out.println("Creating customer user..."); User customer = new User(); customer.setUsername("customer"); customer.setPassword(passwordEncoder.encode("customer123")); @@ -43,6 +58,11 @@ public class DataInitializer implements CommandLineRunner { customer.setFullName("Test Customer"); customer.setRole(User.Role.CUSTOMER); userRepository.save(customer); + System.out.println("Customer user created successfully"); + } else { + System.out.println("Customer user already exists"); } + + System.out.println("==== DataInitializer: Completed ===="); } } diff --git a/src/main/java/com/petshop/backend/controller/ProductController.java b/src/main/java/com/petshop/backend/controller/ProductController.java index f281fb57..6531c72d 100644 --- a/src/main/java/com/petshop/backend/controller/ProductController.java +++ b/src/main/java/com/petshop/backend/controller/ProductController.java @@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/v1/products") -@PreAuthorize("hasAnyRole('STAFF', 'ADMIN')") public class ProductController { private final ProductService productService; @@ -36,11 +35,13 @@ public class ProductController { } @PostMapping + @PreAuthorize("hasAnyRole('STAFF', 'ADMIN')") public ResponseEntity createProduct(@Valid @RequestBody ProductRequest request) { return ResponseEntity.status(HttpStatus.CREATED).body(productService.createProduct(request)); } @PutMapping("/{id}") + @PreAuthorize("hasAnyRole('STAFF', 'ADMIN')") public ResponseEntity updateProduct( @PathVariable Long id, @Valid @RequestBody ProductRequest request) { @@ -48,12 +49,14 @@ public class ProductController { } @DeleteMapping("/{id}") + @PreAuthorize("hasRole('ADMIN')") public ResponseEntity deleteProduct(@PathVariable Long id) { productService.deleteProduct(id); return ResponseEntity.noContent().build(); } @DeleteMapping + @PreAuthorize("hasRole('ADMIN')") public ResponseEntity bulkDeleteProducts(@Valid @RequestBody BulkDeleteRequest request) { productService.bulkDeleteProducts(request); return ResponseEntity.noContent().build(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8d6a631b..40e85de4 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -16,10 +16,7 @@ spring: sql: init: - mode: always - schema-locations: classpath:schema.sql - data-locations: classpath:data.sql - continue-on-error: false + mode: never jpa: hibernate: diff --git a/src/test/java/com/petshop/backend/util/PasswordHashGenerator.java b/src/test/java/com/petshop/backend/util/PasswordHashGenerator.java new file mode 100644 index 00000000..98a9656e --- /dev/null +++ b/src/test/java/com/petshop/backend/util/PasswordHashGenerator.java @@ -0,0 +1,13 @@ +package com.petshop.backend.util; + +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +public class PasswordHashGenerator { + public static void main(String[] args) { + BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); + + System.out.println("admin123: " + encoder.encode("admin123")); + System.out.println("staff123: " + encoder.encode("staff123")); + System.out.println("customer123: " + encoder.encode("customer123")); + } +}