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
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 }