View Javadoc
1   package usecase.auth;
2   
3   import common.http.interceptor.InterceptableServlet;
4   
5   import javax.inject.Inject;
6   import javax.servlet.ServletException;
7   import javax.servlet.annotation.WebServlet;
8   import javax.servlet.http.HttpServletRequest;
9   import javax.servlet.http.HttpServletResponse;
10  import java.io.IOException;
11  import java.util.Optional;
12  
13  /**
14   * Servlet dedicata alle operazioni di login.
15   */
16  @WebServlet("/login")
17  class LoginServlet extends InterceptableServlet {
18      @Inject AuthenticationService authenticationService;
19      @Inject CurrentUser currentUser;
20  
21      @Override
22      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
23          if(currentUser.isLoggedIn())
24              resp.sendRedirect(req.getContextPath());
25          else
26              req.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(req, resp);
27      }
28  
29      @Override
30      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
31          if(currentUser.isLoggedIn()){
32              resp.sendRedirect(req.getContextPath());
33              return;
34          }
35  
36          String username = Optional.ofNullable(req.getParameter("username")).orElse("");
37          String password = Optional.ofNullable(req.getParameter("pass")).orElse("");
38  
39          boolean loginSuccessful = authenticationService.authenticate(username, password);
40  
41          if(loginSuccessful)
42              resp.sendRedirect(req.getContextPath());
43          else
44              req.getRequestDispatcher("/WEB-INF/views/login.jsp?error").forward(req, resp);
45      }
46  }