diff options
Diffstat (limited to 'src/main/java/com/blog/web/controllers/AuthController.java')
| -rw-r--r-- | src/main/java/com/blog/web/controllers/AuthController.java | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/main/java/com/blog/web/controllers/AuthController.java b/src/main/java/com/blog/web/controllers/AuthController.java new file mode 100644 index 0000000..bb7cb0d --- /dev/null +++ b/src/main/java/com/blog/web/controllers/AuthController.java @@ -0,0 +1,64 @@ +package com.blog.web.controllers; + +import com.blog.web.dto.RegistrationDto; +import com.blog.web.models.UserEntity; +import com.blog.web.services.UserService; +import jakarta.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; + +@Controller +public class AuthController { + private UserService userService; + + public AuthController(UserService userService) { + this.userService = userService; + } + + @GetMapping("/login") + public String loginPage() { + return "auth/login"; + } + + @GetMapping("/register") + public String getRegisterForm(Model model) { + RegistrationDto user = new RegistrationDto(); + model.addAttribute("user", user); + return "auth/register"; + } + + @PostMapping("/register/save") + public String register(@Valid @ModelAttribute("user")RegistrationDto user, + BindingResult result, + Model model) { + UserEntity existingUserEmail = userService.findByEmail(user.getEmail()); + if( + existingUserEmail != null && + existingUserEmail.getEmail() != null && + !existingUserEmail.getEmail().isEmpty() + ) { + result.rejectValue("email", "There is already a user with this email"); + } + + UserEntity existingUsername = userService.findByUsername(user.getUsername()); + if( + existingUsername != null && + existingUsername.getUsername() != null && + !existingUsername.getUsername().isEmpty() + ) + { + result.rejectValue("username", "There is already a user with this username"); + } + + if(result.hasErrors()) { + model.addAttribute("user", user); + return "register"; + } + userService.saveUser(user); + return "redirect:/articles?success"; + } +} |
