WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / pwreset / adapters / in / WebController.java
index b848ce2..2d6b089 100644 (file)
@@ -1,7 +1,7 @@
 package de.juplo.demos.pwreset.adapters.in;
 
-import de.juplo.demos.pwreset.api.domain.PasswordResetRequest;
-import de.juplo.demos.pwreset.api.domain.PasswordRestService;
+import de.juplo.demos.pwreset.domain.ports.in.ResetRequestProgress;
+import de.juplo.demos.pwreset.domain.ports.in.PasswordResetService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
@@ -16,56 +16,72 @@ import java.util.UUID;
 @RequiredArgsConstructor
 public class WebController
 {
-  private final PasswordRestService passwordRestService;
+  private final PasswordResetService passwordResetService;
 
 
   @GetMapping("/")
-  public String requestForm()
+  public String welcome()
   {
     return "request";
   }
 
   @PostMapping("/")
-  public void resetRequest(
+  public void createResetRequest(
       @RequestParam String email,
       HttpServletResponse httpServletResponse)
       throws
       IOException
   {
-    PasswordResetRequest resetRequest = passwordRestService.request(email);
-    httpServletResponse.sendRedirect(resetRequest.getUserId().toString());
+    ResetRequestProgress progress = passwordResetService.request(email);
+    httpServletResponse.sendRedirect(progress.getRequestId().toString());
   }
 
   @GetMapping("/{id}")
   public ModelAndView getResetRequest(@PathVariable UUID id)
   {
-    PasswordResetRequest resetRequest = passwordRestService.get(id);
-    ModelAndView mav = new ModelAndView("confirm");
-    return "confirm";
+    ResetRequestProgress progress = passwordResetService.get(id);
+    return createModelAndView(progress);
   }
 
-  @PutMapping("/{id")
+  @PutMapping("/{id}")
   public ModelAndView confirmResetRequest(
       @PathVariable UUID id,
       @RequestParam String code,
       @RequestParam String password)
   {
-    ModelAndView mav = new ModelAndView("confirm");
+    ResetRequestProgress progress =
+        passwordResetService.confirm(
+            id,
+            code,
+            password);
+
+    ModelAndView mav = createModelAndView(progress);
+
     mav.addObject("code", code);
     mav.addObject("password", password);
 
-    try
-    {
-      PasswordResetRequest resetRequest =
-          passwordRestService.confirm(
-              id,
-              code,
-              password);
+    return mav;
+  }
+
+  ModelAndView createModelAndView(ResetRequestProgress progress)
+  {
+    ModelAndView mav = new ModelAndView();
+    mav.addObject("progress", progress);
 
+    if (progress.isAccepted())
+    {
+      if (progress.getConfirmed().isEmpty())
+      {
+        mav.setViewName("confirm");
+      }
+      else
+      {
+        mav.setViewName("confirmed");
+      }
     }
-    catch (Exception e)
+    else
     {
-      mav.addObject("message", e.getMessage());
+      mav.setViewName("denied");
     }
 
     return mav;