diff --git a/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/RegistrationController.java b/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/RegistrationController.java index 32640d8..f2e9d4e 100644 --- a/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/RegistrationController.java +++ b/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/RegistrationController.java @@ -53,6 +53,8 @@ public RedirectView registerUser(@Valid @ModelAttribute UserDto userDto, } System.out.println(result); User user = userService.registerUser(userDto); + if(user == null) + return new RedirectView("/registration/register-form?used"); publisher.publishEvent(new RegistrationCompleteEvent(user, ApplicationUrl.getUrl(request))); return new RedirectView("/registration/register-form?success"); } diff --git a/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/ShopController.java b/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/ShopController.java index 235b9cf..352fdd1 100644 --- a/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/ShopController.java +++ b/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/ShopController.java @@ -40,6 +40,21 @@ public ModelAndView shop(HttpServletRequest request) { return modelAndView; } + @GetMapping("/search") + public ModelAndView search(@RequestParam String search, HttpServletRequest request) { + ModelAndView modelAndView = new ModelAndView("shop"); + List categories = categoryService.getCategoryList(); + modelAndView.addObject("categories", categories); + modelAndView.addObject("request", request); + modelAndView.addObject("search", search); + return modelAndView; + } + +// @GetMapping("searchProduct") +// public List searchProducts(@RequestParam String search) { +// List products = productService.searchProducts(search); +// } + @GetMapping("/product/{id}") public ModelAndView productDetail(@PathVariable Long id, HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView("productDetail"); diff --git a/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/UserController.java b/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/UserController.java index a00651b..c21cdea 100644 --- a/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/UserController.java +++ b/src/main/java/org/ecommerce/spring/boot/vegetable/project/controller/UserController.java @@ -2,9 +2,8 @@ import jakarta.servlet.http.HttpServletRequest; import org.ecommerce.spring.boot.vegetable.project.dto.UserDto; -import org.ecommerce.spring.boot.vegetable.project.entity.OrderItem; -import org.ecommerce.spring.boot.vegetable.project.entity.User; -import org.ecommerce.spring.boot.vegetable.project.entity.UserOrder; +import org.ecommerce.spring.boot.vegetable.project.entity.*; +import org.ecommerce.spring.boot.vegetable.project.service.CategoryService; import org.ecommerce.spring.boot.vegetable.project.service.UserOrderService; import org.ecommerce.spring.boot.vegetable.project.service.UserService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,13 +20,17 @@ @RequestMapping("/user") public class UserController { - @Autowired UserOrderService userOrderService; - @Autowired UserService userService; + @Autowired private UserOrderService userOrderService; + @Autowired private UserService userService; + @Autowired private CategoryService categoryService; @GetMapping("/purchase") public ModelAndView purchase(HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView("user"); + List categories = categoryService.getCategoryList(); + modelAndView.addObject("categories", categories); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String userEmail = authentication.getName(); @@ -43,6 +46,9 @@ public ModelAndView purchase(HttpServletRequest request) { public ModelAndView account(HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView("user"); + List categories = categoryService.getCategoryList(); + modelAndView.addObject("categories", categories); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String userEmail = authentication.getName(); diff --git a/src/main/java/org/ecommerce/spring/boot/vegetable/project/entity/Role.java b/src/main/java/org/ecommerce/spring/boot/vegetable/project/entity/Role.java index 50880bc..f535441 100644 --- a/src/main/java/org/ecommerce/spring/boot/vegetable/project/entity/Role.java +++ b/src/main/java/org/ecommerce/spring/boot/vegetable/project/entity/Role.java @@ -24,6 +24,9 @@ public class Role { ) private String name; +// @ManyToMany(mappedBy = "roles") +// private List users = new ArrayList<>(); + public Role(String name) { this.name = name; } diff --git a/src/main/java/org/ecommerce/spring/boot/vegetable/project/repository/UserRepository.java b/src/main/java/org/ecommerce/spring/boot/vegetable/project/repository/UserRepository.java index 53d9178..10a6541 100644 --- a/src/main/java/org/ecommerce/spring/boot/vegetable/project/repository/UserRepository.java +++ b/src/main/java/org/ecommerce/spring/boot/vegetable/project/repository/UserRepository.java @@ -1,7 +1,11 @@ package org.ecommerce.spring.boot.vegetable.project.repository; +import jakarta.transaction.Transactional; import org.ecommerce.spring.boot.vegetable.project.entity.User; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.Optional; @@ -9,4 +13,10 @@ @Repository public interface UserRepository extends JpaRepository { Optional findByEmail(String email); + + void deleteByEnabled(Boolean enabled); + + @Query(value = "DELETE FROM user_roles WHERE user_id = :id", nativeQuery = true) + @Modifying + void delete1(@Param("id") Long id); } diff --git a/src/main/java/org/ecommerce/spring/boot/vegetable/project/service/implement/UserServiceImp.java b/src/main/java/org/ecommerce/spring/boot/vegetable/project/service/implement/UserServiceImp.java index a7f9440..4f68d5d 100644 --- a/src/main/java/org/ecommerce/spring/boot/vegetable/project/service/implement/UserServiceImp.java +++ b/src/main/java/org/ecommerce/spring/boot/vegetable/project/service/implement/UserServiceImp.java @@ -27,6 +27,10 @@ public User registerUser(UserDto userDto) { if(role == null) { role = new Role("USER"); } + Optional check = userRepository.findByEmail(userDto.getEmail()); + if(check.isPresent()) { + return null; + } User user = User.builder() .firstName(userDto.getFirstName()) .lastName(userDto.getLastName()) diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index a0b10ad..9020005 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -35,8 +35,8 @@
-
diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html index e486aa0..5800e45 100644 --- a/src/main/resources/templates/register.html +++ b/src/main/resources/templates/register.html @@ -16,6 +16,9 @@
Please check your email to complete your registration.
+
+ Email is used. +
diff --git a/src/test/java/org/ecommerce/spring/boot/vegetable/project/repository/UserRepositoryTest.java b/src/test/java/org/ecommerce/spring/boot/vegetable/project/repository/UserRepositoryTest.java new file mode 100644 index 0000000..dc9a4c8 --- /dev/null +++ b/src/test/java/org/ecommerce/spring/boot/vegetable/project/repository/UserRepositoryTest.java @@ -0,0 +1,27 @@ +package org.ecommerce.spring.boot.vegetable.project.repository; + +import jakarta.persistence.EntityManager; +import jakarta.transaction.Transactional; +import org.ecommerce.spring.boot.vegetable.project.entity.Role; +import org.ecommerce.spring.boot.vegetable.project.entity.User; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest +class UserRepositoryTest { + + @Autowired private UserRepository userRepository; + @Autowired private RoleRepository repository; + private EntityManager entityManager; + + + @Test + public void delete1() { + userRepository.delete1(16L); + } + +} \ No newline at end of file