49 lines
1.8 KiB
Java
49 lines
1.8 KiB
Java
package com.webproglabs.lab1.lab34.mvc;
|
|
|
|
import com.webproglabs.lab1.lab34.dto.UserSignUpDto;
|
|
import com.webproglabs.lab1.lab34.model.User;
|
|
import com.webproglabs.lab1.lab34.services.UserService;
|
|
import javax.validation.Valid;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
@Controller
|
|
@RequestMapping(UserSignUpMvcController.SIGNUP_URL)
|
|
public class UserSignUpMvcController {
|
|
public static final String SIGNUP_URL = "/signup";
|
|
|
|
private final UserService UserService;
|
|
|
|
public UserSignUpMvcController(UserService userService) {
|
|
UserService = userService;
|
|
}
|
|
|
|
@GetMapping
|
|
public String showSignupForm(Model model) {
|
|
model.addAttribute("userDto", new UserSignUpDto());
|
|
return "signup";
|
|
}
|
|
|
|
@PostMapping
|
|
public String signup(@ModelAttribute("userDto") @Valid UserSignUpDto userSignupDto,
|
|
BindingResult bindingResult,
|
|
Model model) {
|
|
if (bindingResult.hasErrors()) {
|
|
model.addAttribute("errors", bindingResult.getAllErrors());
|
|
return "signup";
|
|
}
|
|
try {
|
|
final User NewUser = UserService.createUser(userSignupDto.getLogin(), userSignupDto.getPassword(), userSignupDto.getPasswordConfirm());
|
|
return "redirect:/login?created=" + NewUser.getLogin();
|
|
} catch (Exception e) {
|
|
model.addAttribute("errors", e.getMessage());
|
|
return "signup";
|
|
}
|
|
}
|
|
}
|