/
ilyaBu
/
WebSpringJava
Обзор
Документация
Войти
/
ilyaBu
/
WebSpringJava
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/ru/gb/spring/diplomawebjavaspringgb/controller/MyUserController.java
208 строк
8 KB
IliaBu
Update code
14 июл 2024, 15:26
14 июл 2024, 15:26
3414678
Код
Авторство
О чём код?
package ru.gb.spring.diplomawebjavaspringgb.controller; import ru.gb.spring.diplomawebjavaspringgb.model.Role; import ru.gb.spring.diplomawebjavaspringgb.model.User; import ru.gb.spring.diplomawebjavaspringgb.service.RandomBackground; import ru.gb.spring.diplomawebjavaspringgb.service.UserService; import jakarta.validation.Valid; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.reactive.function.client.WebClientResponseException; import java.util.List; import java.util.Optional; /** * Класс контроллера пользователей. */ @AllArgsConstructor @Controller public class MyUserController { @Autowired private UserService userService; /** * Метод перехода на страницу home.html. * * @param model модель * @return страницу home.html */ @GetMapping("/") public String home(Model model) { model.addAttribute("title", "Главная"); model.addAttribute("images", RandomBackground.randomBackground()); return "home"; } /** * Метод перехода на страницу login.html. * * @param model модель * @return страницу login.html */ @GetMapping("/login") public String login(Model model) { model.addAttribute("title", "Вход"); model.addAttribute("images", RandomBackground.randomBackground()); return "login"; } /** * Метод перехода на страницу home-admin.html под администратором. * * @param model модель * @return страницу home-admin.html */ @GetMapping("/home-admin") public String showUserList(Model model) { try { List<User> listUsers = userService.findAllUsers(); model.addAttribute("title", "Список пользователей"); model.addAttribute("userfirstname", userService.getCurrentUser()); model.addAttribute("images", RandomBackground.randomBackground()); model.addAttribute("users", listUsers); } catch (Exception e) { model.addAttribute("message", e.getMessage()); } return "home-admin"; } /** * Метод перехода на страницу register.html для регистрации нового пользователя. * * @param model модель * @return страницу register.html */ @GetMapping("register") public String showRegistrationForm(Model model) { model.addAttribute("title", "Регистрация пользователя"); model.addAttribute("userfirstname", userService.getCurrentUser()); model.addAttribute("images", RandomBackground.randomBackground()); model.addAttribute("user", new User()); return "register"; } /** * Метод регистрации нового пользователя. * * @param user пользователь * @param result результат * @return страницу login с сообщением об успешной регистрации * или на страницу register.html с сообщением об ошибке */ @PostMapping("/register/save") public String registrationSave(@Valid @ModelAttribute("user") User user, BindingResult result) { User existing = userService.findByEmail(user.getEmail()); if (existing != null) { result.rejectValue("email", "", "На этот адрес электронной почты уже зарегистрирована учетная запись"); } if (result.hasErrors()) { return "register"; } userService.saveUser(user); return "redirect:/login?success"; } /** * Метод перехода на страницу register-admin.html для регистрации нового пользователя под администратором. * * @param model модель * @return страницу register-admin.html */ @GetMapping("register-admin") public String showRegistrationAdminForm(Model model) { List<Role> listRoles = userService.findAllRoles(); model.addAttribute("title", "Регистрация пользователя"); model.addAttribute("userfirstname", userService.getCurrentUser()); model.addAttribute("images", RandomBackground.randomBackground()); model.addAttribute("listRoles", listRoles); model.addAttribute("user", new User()); return "register-admin"; } /** * Метод регистрации нового пользователя под администратором. * * @param user пользователь * @param result результат * @return страницу home-admin.html с сообщением об успешной регистрации * или на страницу register-admin.html с сообщением об ошибке */ @PostMapping("/register-admin/save") public String registrationAdminSave(@Valid @ModelAttribute("user") User user, BindingResult result) { User existing = userService.findByEmail(user.getEmail()); if (existing != null) { result.rejectValue("email", "", "На этот адрес электронной почты уже зарегистрирована учетная запись"); } if (result.hasErrors()) { return "register-admin"; } userService.saveAdminUser(user); return "redirect:/home-admin?success"; } /** * Метод отображения формы обновления пользователя. * * @param id идентификатор * @param model модель * @return страницу user-update.html с формой редактирования пользователя */ @GetMapping("/user-update/{id}") public String showUserUpdateForm(@PathVariable("id") Integer id, Model model) { model.addAttribute("title", "Изменение пользователя"); model.addAttribute("userfirstname", userService.getCurrentUser()); Optional<User> user = userService.findByIdUser(id); List<Role> listRoles = userService.findAllRoles(); model.addAttribute("listRoles", listRoles); model.addAttribute("user", user); return "user-update"; } /** * Метод сохранения пользователя. * * @param user пользователь * @return страницу home-admin.html с сообщением об успешном обновлении пользователя */ @PostMapping("/user-update/save") public String user_save(@Valid @ModelAttribute("user") User user) { userService.saveAdminUser(user); return "redirect:/home-admin?success"; } /** * Метод удаления пользователя под администратором. * * @param id идентификатор пользователя * @return страницу home-admin.html */ @GetMapping("/user-delete/{id}") public String deleteUser(@PathVariable Integer id) { userService.deleteUser(id); return "redirect:/home-admin"; } /** * Метод обработки ошибки. * * @param model модель * @param ex исключение * @return страницу home.html с сообщением об ошибке */ @ExceptionHandler(WebClientResponseException.class) public String handleError(Model model, WebClientResponseException ex) { model.addAttribute("error", ex.getMessage()); return "home"; } }