WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / pwreset / adapters / in / WebController.java
diff --git a/pwreset/src/main/java/de/juplo/demos/pwreset/adapters/in/WebController.java b/pwreset/src/main/java/de/juplo/demos/pwreset/adapters/in/WebController.java
new file mode 100644 (file)
index 0000000..79ad14e
--- /dev/null
@@ -0,0 +1,73 @@
+package de.juplo.demos.pwreset.adapters.in;
+
+import de.juplo.demos.pwreset.api.domain.PasswordResetRequest;
+import de.juplo.demos.pwreset.api.domain.PasswordRestService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.UUID;
+
+
+@Controller
+@RequiredArgsConstructor
+public class WebController
+{
+  private final PasswordRestService passwordRestService;
+
+
+  @GetMapping("/")
+  public String requestForm()
+  {
+    return "request";
+  }
+
+  @PostMapping("/")
+  public void resetRequest(
+      @RequestParam String email,
+      HttpServletResponse httpServletResponse)
+      throws
+      IOException
+  {
+    PasswordResetRequest resetRequest = passwordRestService.requestPasswordReset(email);
+    httpServletResponse.sendRedirect(resetRequest.getUserId().toString());
+  }
+
+  @GetMapping("/{id}")
+  public ModelAndView getResetRequest(@PathVariable UUID id)
+  {
+    PasswordResetRequest resetRequest = passwordRestService.getPasswordReset(id);
+    ModelAndView mav = new ModelAndView("confirm");
+    return "confirm";
+  }
+
+  @PutMapping("/{id")
+  public ModelAndView confirmResetRequest(
+      @PathVariable UUID id,
+      @RequestParam String code,
+      @RequestParam String password)
+  {
+    ModelAndView mav = new ModelAndView("confirm");
+    mav.addObject("code", code);
+    mav.addObject("password", password);
+
+    try
+    {
+      PasswordResetRequest resetRequest =
+          passwordRestService.confirmPasswordRequest(
+              id,
+              code,
+              password);
+
+    }
+    catch (Exception e)
+    {
+      mav.addObject("message", e.getMessage());
+    }
+
+    return mav;
+  }
+}