chavdardim1990

Untitled

Mar 18th, 2022
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.74 KB | None | 0 0
  1. package com.telerikacademy.web.forum.controllers.mvc;
  2.  
  3. import com.telerikacademy.web.forum.exceptions.AuthenticationFailureException;
  4. import com.telerikacademy.web.forum.exceptions.DuplicateEntityException;
  5. import com.telerikacademy.web.forum.exceptions.EntityNotFoundException;
  6. import com.telerikacademy.web.forum.exceptions.UnauthorizedOperationException;
  7. import com.telerikacademy.web.forum.models.User;
  8. import com.telerikacademy.web.forum.models.dto.UserDTO;
  9. import com.telerikacademy.web.forum.models.dto.UserOutDTO;
  10. import com.telerikacademy.web.forum.services.contracts.UserService;
  11. import com.telerikacademy.web.forum.utils.helper.AuthenticationHelper;
  12. import com.telerikacademy.web.forum.utils.mapper.UserMapper;
  13. import org.springframework.stereotype.Controller;
  14. import org.springframework.ui.Model;
  15. import org.springframework.validation.BindingResult;
  16. import org.springframework.web.bind.annotation.*;
  17.  
  18. import javax.servlet.http.HttpSession;
  19. import javax.validation.Valid;
  20. import java.util.Optional;
  21.  
  22. @Controller
  23. @RequestMapping("/users")
  24. public class UserMvcController {
  25.  
  26. private final UserService userService;
  27. private final AuthenticationHelper authenticationHelper;
  28. private final UserMapper userMapper;
  29.  
  30. public UserMvcController(UserService userService,
  31. AuthenticationHelper authenticationHelper,
  32. UserMapper userMapper) {
  33. this.userService = userService;
  34. this.authenticationHelper = authenticationHelper;
  35. this.userMapper = userMapper;
  36. }
  37.  
  38. @ModelAttribute("isAuthenticated")
  39. public boolean populateIsAuthenticated(HttpSession session) {
  40. return session.getAttribute("currentUser") != null;
  41. }
  42.  
  43. @ModelAttribute("userId")
  44. public int getUserId(HttpSession session) {
  45. int userId = 0;
  46. if (populateIsAuthenticated(session)) userId = authenticationHelper.tryGetUser(session).getUserId();
  47. return userId;
  48. }
  49.  
  50. @GetMapping
  51. public String showAllUsers(
  52. @RequestParam(required = false) Optional<String> search, Model model, HttpSession session) {
  53.  
  54. try {
  55. User user = authenticationHelper.tryGetUser(session);
  56. model.addAttribute("users", userService.search(search, user));
  57. return "users";
  58. } catch (AuthenticationFailureException e) {
  59. return "redirect:/auth/login";
  60. }
  61.  
  62. }
  63.  
  64. @GetMapping("/{userId}")
  65. public String getById(@PathVariable int userId, Model model, HttpSession session) {
  66.  
  67. try {
  68. User user = authenticationHelper.tryGetUser(session);
  69. model.addAttribute("user", userService.getById(user, userId));
  70. return "user";
  71. } catch (AuthenticationFailureException e) {
  72. return "redirect:/auth/login";
  73. } catch (UnauthorizedOperationException e) {
  74. return "access-denied";
  75. }
  76. }
  77.  
  78. @GetMapping("/{userId}/update")
  79. public String showEditUserPage(@PathVariable int userId, Model model, HttpSession session) {
  80. try {
  81. authenticationHelper.tryGetUser(session);
  82. } catch (AuthenticationFailureException e) {
  83. return "redirect:/auth/login";
  84. }
  85.  
  86. try {
  87. User editor = userService.getById(userId);
  88. UserOutDTO userOutDTO = userMapper.userToUserOutDto(editor);
  89. model.addAttribute("user", userOutDTO);
  90. return "user-update";
  91. } catch (EntityNotFoundException e) {
  92. model.addAttribute("error", e.getMessage());
  93. return "not-found";
  94. }
  95. }
  96.  
  97. @PostMapping("/{userId}/update")
  98. public String updateUser(@PathVariable int userId,
  99. @Valid @ModelAttribute("user") UserDTO userDTO,
  100. BindingResult errors,
  101. HttpSession session) {
  102. User loggedInUser;
  103. try {
  104. loggedInUser = authenticationHelper.tryGetUser(session);
  105. } catch (AuthenticationFailureException e) {
  106. return "redirect:/auth/login";
  107. }
  108.  
  109. if (errors.hasErrors()) {
  110. return "user-update";
  111. }
  112.  
  113. try {
  114. User userToBeUpdated = userMapper.userDtoToUserUpdate(userDTO, userId);
  115. userService.update(loggedInUser, userToBeUpdated);
  116. return "redirect:/users/{userId}";
  117. } catch (DuplicateEntityException e) {
  118. errors.rejectValue("username", "username_email_error", e.getMessage());
  119. return "/user-update";
  120. } catch (UnauthorizedOperationException e) {
  121. errors.rejectValue("userType", "usertype_role", e.getMessage());
  122. return "/user-update";
  123. }
  124. }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment