myrdok123

UsersController

Feb 17th, 2023 (edited)
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.85 KB | Software | 0 0
  1. package com.example.coffeeshop.web;
  2.  
  3. import com.example.coffeeshop.model.binding.UserLoginBindingModel;
  4. import com.example.coffeeshop.model.binding.UserRegisterBindingModel;
  5. import com.example.coffeeshop.model.service.UserServiceModel;
  6. import com.example.coffeeshop.service.UserService;
  7. import jakarta.servlet.http.HttpSession;
  8. import jakarta.validation.Valid;
  9. import org.modelmapper.ModelMapper;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.ui.Model;
  12. import org.springframework.validation.BindingResult;
  13. import org.springframework.web.bind.annotation.GetMapping;
  14. import org.springframework.web.bind.annotation.ModelAttribute;
  15. import org.springframework.web.bind.annotation.PostMapping;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  18.  
  19. @Controller
  20. @RequestMapping("/users")
  21. public class UserController {
  22.  
  23.  
  24.     private final UserService userService;
  25.     private final ModelMapper modelMapper;
  26.  
  27.     public UserController(UserService userService, ModelMapper modelMapper) {
  28.         this.userService = userService;
  29.         this.modelMapper = modelMapper;
  30.     }
  31.  
  32.     @GetMapping("/register")
  33.     public String register(){
  34.  
  35.         return "register";
  36.     }
  37.  
  38.  
  39.  
  40.     @PostMapping("/register")
  41.     public String registerConfirm(@Valid UserRegisterBindingModel userRegisterBindingModel,
  42.                                   BindingResult bindingResult, RedirectAttributes redirectAttributes){
  43.  
  44.         if (bindingResult.hasErrors() || !userRegisterBindingModel.getPassword()
  45.                 .equals(userRegisterBindingModel.getConfirmPassword())) {
  46.  
  47.             redirectAttributes.addFlashAttribute("userRegisterBindingModel", userRegisterBindingModel);
  48.             redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.userRegisterBindingModel",
  49.                     bindingResult);
  50.  
  51.             return "redirect:register";
  52.         }
  53.  
  54.         userService.registerUser(modelMapper
  55.                 .map(userRegisterBindingModel, UserServiceModel.class));
  56.  
  57.  
  58.         return "redirect:login";
  59.  
  60.  
  61.     }
  62.  
  63.     @GetMapping("/login")
  64.     public String login(Model model){
  65.  
  66.         if (!model.containsAttribute("isFound")){
  67.             model.addAttribute("isFound", true);
  68.         }
  69.         return "login";
  70.     }
  71.  
  72.     @PostMapping("/login")
  73.     public String loginConfirm(@Valid UserLoginBindingModel userLoginBindingModel,
  74.                                BindingResult bindingResult, RedirectAttributes redirectAttributes){
  75.  
  76.         if (bindingResult.hasErrors()){
  77.  
  78.             redirectAttributes.addFlashAttribute("userLoginBindingModel", userLoginBindingModel);
  79.             redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.userLoginBindingModel"
  80.                     , bindingResult);
  81.  
  82.             return "redirect:login";
  83.         }
  84.  
  85.         UserServiceModel userServiceModel = userService
  86.                 .findByUsername(userLoginBindingModel.getUsername());
  87.  
  88.         if (userServiceModel == null){
  89.  
  90.             redirectAttributes.addFlashAttribute("userLoginBindingModel", userLoginBindingModel);
  91.             redirectAttributes.addFlashAttribute("isFound", false);
  92.  
  93.             return "redirect:login";
  94.         }
  95.  
  96.         userService.loginUser(userServiceModel.getId(), userLoginBindingModel.getUsername());
  97.  
  98.         return "redirect:/home";
  99.  
  100.     }
  101.  
  102.     @GetMapping("/logout")
  103.     public String logout(HttpSession httpSession){
  104.         httpSession.invalidate();
  105.         return "redirect:/";
  106.     }
  107.  
  108.     @ModelAttribute
  109.     public UserRegisterBindingModel userRegisterBindingModel(){
  110.  
  111.         return  new UserRegisterBindingModel();
  112.     }
  113.  
  114.     @ModelAttribute
  115.     private UserLoginBindingModel userLoginBindingModel(){
  116.  
  117.         return new UserLoginBindingModel();
  118.     }
  119. }
  120.  
Advertisement
Add Comment
Please, Sign In to add comment