summaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/blog/web/controllers/AuthController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/blog/web/controllers/AuthController.java')
-rw-r--r--src/main/java/com/blog/web/controllers/AuthController.java64
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";
+ }
+}