Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1761ca8

Browse files
Added Authentication folder in the MVCPracticeAdvanced section of a small course on Java EE
1 parent 71265ae commit 1761ca8

File tree

3 files changed

+137
-0
lines changed

3 files changed

+137
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package Authentication;
2+
3+
import AirportSimulatorTwo.DTO.ReadUserDto;
4+
import AirportSimulatorTwo.Service.UserService;
5+
import AirportSimulatorTwo.Util.JspPathHelper;
6+
import jakarta.servlet.ServletException;
7+
import jakarta.servlet.annotation.WebServlet;
8+
import jakarta.servlet.http.HttpServlet;
9+
import jakarta.servlet.http.HttpServletRequest;
10+
import jakarta.servlet.http.HttpServletResponse;
11+
import lombok.SneakyThrows;
12+
13+
import java.io.IOException;
14+
15+
@WebServlet("/login")
16+
public class LogInServlet extends HttpServlet {
17+
/* Вызываем UserService, чтобы использовать его методы */
18+
private final UserService userService = UserService.getInstance();
19+
/* Перенаправляем GET запрос от пользователя на login.jsp */
20+
@Override
21+
protected void doGet(HttpServletRequest req,
22+
HttpServletResponse resp)
23+
throws ServletException, IOException {
24+
25+
req.getRequestDispatcher(JspPathHelper.getJspPath("login")).forward(req, resp);
26+
}
27+
/* Обрабатываем полученный POST запрос */
28+
@Override
29+
protected void doPost(HttpServletRequest req,
30+
HttpServletResponse resp)
31+
throws ServletException, IOException {
32+
/* Получаем из запроса параметры email и password */
33+
String enterEmail = req.getParameter("email");
34+
String enterPassword = req.getParameter("password");
35+
/* Обрабатываем полученные данные в методе *.login класса UserService */
36+
userService.login(enterEmail, enterPassword).
37+
ifPresentOrElse(
38+
user -> onLoginSuccess(user, req, resp), // Если пользователь в базе есть, то...
39+
() -> onLoginFail(req, resp) // Если пользователя в базе нет, то...
40+
);
41+
42+
}
43+
/* Метод обрабатывает случай когда пользователя с введенными параметрами в базе нет */
44+
@SneakyThrows
45+
private void onLoginFail(HttpServletRequest req,
46+
HttpServletResponse resp){
47+
/*
48+
Перенаправляем на сервлет с URL /login с параметрами
49+
'?error&email=" + req.getParameter("email")'
50+
*/
51+
resp.sendRedirect("/login?error&email=" + req.getParameter("email"));
52+
}
53+
/* Метод обрабатывает случай когда пользователь с введенными параметрами в базе есть */
54+
@SneakyThrows
55+
private void onLoginSuccess(ReadUserDto user,
56+
HttpServletRequest req,
57+
HttpServletResponse resp) {
58+
req.getSession().setAttribute("user", user);
59+
resp.sendRedirect("/flights");
60+
}
61+
62+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package Authentication;
2+
3+
import AirportSimulatorTwo.DTO.ReadUserDto;
4+
import AirportSimulatorTwo.Service.UserService;
5+
import AirportSimulatorTwo.Util.JspPathHelper;
6+
import jakarta.servlet.ServletException;
7+
import jakarta.servlet.annotation.WebServlet;
8+
import jakarta.servlet.http.HttpServlet;
9+
import jakarta.servlet.http.HttpServletRequest;
10+
import jakarta.servlet.http.HttpServletResponse;
11+
import lombok.SneakyThrows;
12+
13+
import java.io.IOException;
14+
15+
@WebServlet("/international_login")
16+
public class LogInServletWithLocal extends HttpServlet {
17+
18+
private final UserService userService = UserService.getInstance();
19+
20+
@Override
21+
protected void doGet(HttpServletRequest req,
22+
HttpServletResponse resp)
23+
throws ServletException, IOException {
24+
25+
req.getRequestDispatcher(JspPathHelper.getJspPath("international_login")).forward(req, resp);
26+
}
27+
28+
@Override
29+
protected void doPost(HttpServletRequest req,
30+
HttpServletResponse resp)
31+
throws ServletException, IOException {
32+
String enterEmail = req.getParameter("email");
33+
String enterPassword = req.getParameter("password");
34+
userService.login(enterEmail, enterPassword).
35+
ifPresentOrElse(
36+
user -> onLoginSuccess(user, req, resp),
37+
() -> onLoginFail(req, resp)
38+
);
39+
40+
}
41+
@SneakyThrows
42+
private void onLoginFail(HttpServletRequest req,
43+
HttpServletResponse resp){
44+
resp.sendRedirect("/international_login?error&email=" + req.getParameter("email"));
45+
}
46+
@SneakyThrows
47+
private void onLoginSuccess(ReadUserDto user,
48+
HttpServletRequest req,
49+
HttpServletResponse resp) {
50+
req.getSession().setAttribute("user", user);
51+
resp.sendRedirect("/flights");
52+
}
53+
54+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package Authentication;
2+
3+
import jakarta.servlet.ServletException;
4+
import jakarta.servlet.annotation.WebServlet;
5+
import jakarta.servlet.http.HttpServlet;
6+
import jakarta.servlet.http.HttpServletRequest;
7+
import jakarta.servlet.http.HttpServletResponse;
8+
9+
import java.io.IOException;
10+
11+
@WebServlet("/logout")
12+
public class LogOutServlet extends HttpServlet {
13+
@Override
14+
protected void doPost(HttpServletRequest req,
15+
HttpServletResponse resp) throws ServletException, IOException {
16+
17+
req.getSession().invalidate();
18+
19+
resp.sendRedirect("/login");
20+
}
21+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /