1 package usecase.user;
2
3 import common.http.error.ForwardOnError;
4 import common.http.interceptor.InterceptableServlet;
5 import usecase.auth.AuthenticationService;
6 import usecase.auth.CurrentUser;
7
8 import javax.inject.Inject;
9 import javax.servlet.ServletException;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import java.io.IOException;
14 import java.util.ArrayList;
15 import java.util.Objects;
16
17
18
19
20 @WebServlet("/register")
21 class RegisterServlet extends InterceptableServlet {
22 @Inject private UserService userService;
23 @Inject private CurrentUser currentUser;
24 @Inject private AuthenticationService authenticationService;
25
26 private static final String REGISTER_PAGE = "/WEB-INF/views/register.jsp";
27
28 @Override
29 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
30 if(currentUser.isLoggedIn()){
31 resp.sendRedirect(req.getContextPath());
32 return;
33 }
34 req.getRequestDispatcher(REGISTER_PAGE).forward(req, resp);
35 }
36
37
38 @Override
39 @ForwardOnError(REGISTER_PAGE)
40 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
41 if(currentUser.isLoggedIn()){
42 resp.sendRedirect(req.getContextPath());
43 return;
44 }
45 String email = req.getParameter("mail");
46 String username = req.getParameter("username");
47 String password = req.getParameter("pass");
48 String confirmPassword = req.getParameter("pass2");
49
50 if(!Objects.equals(password, confirmPassword)){
51 ArrayList<String> errors = new ArrayList<>();
52 errors.add("Le password devono coincidere");
53 req.setAttribute("errors",errors);
54 req.getRequestDispatcher("/WEB-INF/views/register.jsp").forward(req, resp);
55 }else {
56 userService.newUser(email, username, password);
57 authenticationService.authenticate(username,password);
58 resp.sendRedirect(req.getContextPath());
59 }
60 }
61 }