WIP
[demos/pact] / pwreset / src / main / java / de / juplo / demos / pwreset / adapters / in / WebController.java
1 package de.juplo.demos.pwreset.adapters.in;
2
3 import de.juplo.demos.pwreset.api.domain.PasswordResetRequest;
4 import de.juplo.demos.pwreset.api.domain.PasswordRestService;
5 import lombok.RequiredArgsConstructor;
6 import org.springframework.stereotype.Controller;
7 import org.springframework.web.bind.annotation.*;
8 import org.springframework.web.servlet.ModelAndView;
9
10 import javax.servlet.http.HttpServletResponse;
11 import java.io.IOException;
12 import java.util.UUID;
13
14
15 @Controller
16 @RequiredArgsConstructor
17 public class WebController
18 {
19   private final PasswordRestService passwordRestService;
20
21
22   @GetMapping("/")
23   public String requestForm()
24   {
25     return "request";
26   }
27
28   @PostMapping("/")
29   public void resetRequest(
30       @RequestParam String email,
31       HttpServletResponse httpServletResponse)
32       throws
33       IOException
34   {
35     PasswordResetRequest resetRequest = passwordRestService.requestPasswordReset(email);
36     httpServletResponse.sendRedirect(resetRequest.getUserId().toString());
37   }
38
39   @GetMapping("/{id}")
40   public ModelAndView getResetRequest(@PathVariable UUID id)
41   {
42     PasswordResetRequest resetRequest = passwordRestService.getPasswordReset(id);
43     ModelAndView mav = new ModelAndView("confirm");
44     return "confirm";
45   }
46
47   @PutMapping("/{id")
48   public ModelAndView confirmResetRequest(
49       @PathVariable UUID id,
50       @RequestParam String code,
51       @RequestParam String password)
52   {
53     ModelAndView mav = new ModelAndView("confirm");
54     mav.addObject("code", code);
55     mav.addObject("password", password);
56
57     try
58     {
59       PasswordResetRequest resetRequest =
60           passwordRestService.confirmPasswordRequest(
61               id,
62               code,
63               password);
64
65     }
66     catch (Exception e)
67     {
68       mav.addObject("message", e.getMessage());
69     }
70
71     return mav;
72   }
73 }