diff --git a/pom.xml b/pom.xml index a043c369c..5f6650c51 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,6 @@ https://raw.githubusercontent.com/mate-academy/style-guides/master/java/checkstyle.xml - mysql @@ -37,7 +36,6 @@ 1.2 - diff --git a/src/main/java/taxi/controller/LoginController.java b/src/main/java/taxi/controller/LoginController.java new file mode 100644 index 000000000..674edfaad --- /dev/null +++ b/src/main/java/taxi/controller/LoginController.java @@ -0,0 +1,40 @@ +package taxi.controller; + +import java.io.IOException; +import javax.naming.AuthenticationException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import taxi.lib.Injector; +import taxi.model.Driver; +import taxi.service.AuthenticationService; + +public class LoginController extends HttpServlet { + private static final Injector injector = Injector.getInstance("taxi"); + private AuthenticationService authenticationService = + (AuthenticationService) injector.getInstance(AuthenticationService.class); + + @Override + protected void doGet(HttpServletRequest req, + HttpServletResponse resp) throws ServletException, IOException { + req.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(req, resp); + } + + @Override + protected void doPost(HttpServletRequest req, + HttpServletResponse resp) throws ServletException, IOException { + String login = req.getParameter("login"); + String password = req.getParameter("password"); + try { + Driver driver = authenticationService.login(login, password); + HttpSession session = req.getSession(); + session.setAttribute("user_id", driver.getId()); + resp.sendRedirect(req.getContextPath() + "/index"); + } catch (AuthenticationException e) { + req.setAttribute("errorMsg", e.getMessage()); + req.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(req, resp); + } + } +} diff --git a/src/main/java/taxi/controller/LogoutController.java b/src/main/java/taxi/controller/LogoutController.java new file mode 100644 index 000000000..ad7cd43d4 --- /dev/null +++ b/src/main/java/taxi/controller/LogoutController.java @@ -0,0 +1,21 @@ +package taxi.controller; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import taxi.lib.Injector; + +public class LogoutController extends HttpServlet { + private static final Injector injector = Injector.getInstance("taxi"); + + @Override + protected void doGet(HttpServletRequest req, + HttpServletResponse resp) throws ServletException, IOException { + HttpSession session = req.getSession(); + session.invalidate(); + resp.sendRedirect(req.getContextPath() + "/index"); + } +} diff --git a/src/main/java/taxi/controller/car/GetMyCurrentCarsController.java b/src/main/java/taxi/controller/car/GetMyCurrentCarsController.java new file mode 100644 index 000000000..e052886ba --- /dev/null +++ b/src/main/java/taxi/controller/car/GetMyCurrentCarsController.java @@ -0,0 +1,27 @@ +package taxi.controller.car; + +import java.io.IOException; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import taxi.lib.Injector; +import taxi.model.Car; +import taxi.service.CarService; + +public class GetMyCurrentCarsController extends HttpServlet { + private static final Injector injector = Injector.getInstance("taxi"); + private final CarService carService = (CarService) injector.getInstance(CarService.class); + + @Override + protected void doGet(HttpServletRequest req, + HttpServletResponse resp) throws ServletException, IOException { + HttpSession session = req.getSession(); + Long userId = (Long) session.getAttribute("user_id"); + List cars = carService.getAllByDriver(userId); + req.setAttribute("cars", cars); + req.getRequestDispatcher("/WEB-INF/views/cars/all.jsp").forward(req, resp); + } +} diff --git a/src/main/java/taxi/controller/driver/AddDriverController.java b/src/main/java/taxi/controller/driver/AddDriverController.java index 1db67730b..0d15758c0 100644 --- a/src/main/java/taxi/controller/driver/AddDriverController.java +++ b/src/main/java/taxi/controller/driver/AddDriverController.java @@ -11,8 +11,8 @@ public class AddDriverController extends HttpServlet { private static final Injector injector = Injector.getInstance("taxi"); - private final DriverService driverService = (DriverService) injector - .getInstance(DriverService.class); + private final DriverService driverService = + (DriverService) injector.getInstance(DriverService.class); @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) @@ -24,8 +24,12 @@ public void doGet(HttpServletRequest req, HttpServletResponse resp) public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { String name = req.getParameter("name"); String licenseNumber = req.getParameter("license_number"); + String login = req.getParameter("login"); + String password = req.getParameter("password"); Driver driver = new Driver(name, licenseNumber); + driver.setLogin(login); + driver.setPassword(password); driverService.create(driver); - resp.sendRedirect(req.getContextPath() + "/drivers/add"); + resp.sendRedirect(req.getContextPath() + "/index"); } } diff --git a/src/main/java/taxi/dao/CarDaoImpl.java b/src/main/java/taxi/dao/CarDaoImpl.java index 586ccb595..5372a4d2f 100644 --- a/src/main/java/taxi/dao/CarDaoImpl.java +++ b/src/main/java/taxi/dao/CarDaoImpl.java @@ -20,11 +20,11 @@ public class CarDaoImpl implements CarDao { @Override public Car create(Car car) { String query = "INSERT INTO cars (model, manufacturer_id)" - + "VALUES (?, ?)"; + + "VALUES (?, ?)"; try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = connection.prepareStatement( - query, Statement.RETURN_GENERATED_KEYS)) { + query, Statement.RETURN_GENERATED_KEYS)) { statement.setString(1, car.getModel()); statement.setLong(2, car.getManufacturer().getId()); statement.executeUpdate(); @@ -42,13 +42,13 @@ public Car create(Car car) { @Override public Optional get(Long id) { String query = "SELECT c.id AS id, " - + "model, " - + "manufacturer_id, " - + "m.name AS manufacturer_name, " - + "m.country AS manufacturer_country " - + "FROM cars c " - + "JOIN manufacturers m ON c.manufacturer_id = m.id " - + "WHERE c.id = ? AND c.is_deleted = FALSE"; + + "model, " + + "manufacturer_id, " + + "m.name AS manufacturer_name, " + + "m.country AS manufacturer_country " + + "FROM cars c " + + "JOIN manufacturers m ON c.manufacturer_id = m.id " + + "WHERE c.id = ? AND c.is_deleted = FALSE"; Car car = null; try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = @@ -70,13 +70,13 @@ public Optional get(Long id) { @Override public List getAll() { String query = "SELECT c.id AS id, " - + "model, " - + "manufacturer_id, " - + "m.name AS manufacturer_name, " - + "m.country AS manufacturer_country " - + "FROM cars c" - + " JOIN manufacturers m ON c.manufacturer_id = m.id" - + " WHERE c.is_deleted = FALSE"; + + "model, " + + "manufacturer_id, " + + "m.name AS manufacturer_name, " + + "m.country AS manufacturer_country " + + "FROM cars c" + + " JOIN manufacturers m ON c.manufacturer_id = m.id" + + " WHERE c.is_deleted = FALSE"; List cars = new ArrayList<>(); try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = @@ -95,7 +95,7 @@ public List getAll() { @Override public Car update(Car car) { String query = "UPDATE cars SET model = ?, manufacturer_id = ? WHERE id = ?" - + " AND is_deleted = FALSE"; + + " AND is_deleted = FALSE"; try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = connection.prepareStatement(query)) { @@ -114,10 +114,10 @@ public Car update(Car car) { @Override public boolean delete(Long id) { String query = "UPDATE cars SET is_deleted = TRUE WHERE id = ?" - + " AND is_deleted = FALSE"; + + " AND is_deleted = FALSE"; try (Connection connection = ConnectionUtil.getConnection(); - PreparedStatement statement = - connection.prepareStatement(query)) { + PreparedStatement statement = + connection.prepareStatement(query)) { statement.setLong(1, id); return statement.executeUpdate() > 0; } catch (SQLException e) { @@ -128,16 +128,16 @@ public boolean delete(Long id) { @Override public List getAllByDriver(Long driverId) { String query = "SELECT c.id AS id, " - + "model, " - + "manufacturer_id, " - + "m.name AS manufacturer_name, " - + "m.country AS manufacturer_country " - + "FROM cars c" - + " JOIN manufacturers m ON c.manufacturer_id = m.id" - + " JOIN cars_drivers cd ON c.id = cd.car_id" - + " JOIN drivers d ON cd.driver_id = d.id" - + " WHERE c.is_deleted = FALSE AND driver_id = ?" - + " AND d.is_deleted = FALSE"; + + "model, " + + "manufacturer_id, " + + "m.name AS manufacturer_name, " + + "m.country AS manufacturer_country " + + "FROM cars c" + + " JOIN manufacturers m ON c.manufacturer_id = m.id" + + " JOIN cars_drivers cd ON c.id = cd.car_id" + + " JOIN drivers d ON cd.driver_id = d.id" + + " WHERE c.is_deleted = FALSE AND driver_id = ?" + + " AND d.is_deleted = FALSE"; List cars = new ArrayList<>(); try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = @@ -149,7 +149,7 @@ public List getAllByDriver(Long driverId) { } } catch (SQLException e) { throw new DataProcessingException("Can't get all cars for driver with id: " - + driverId, e); + + driverId, e); } cars.forEach(car -> car.setDrivers(getAllDriversByCarId(car.getId()))); return cars; @@ -183,15 +183,15 @@ private void deleteAllDrivers(Car car) { statement.executeUpdate(); } catch (SQLException e) { throw new DataProcessingException("Can't delete drivers " + car.getDrivers() - + " of car with id: " + car.getId(), e); + + " of car with id: " + car.getId(), e); } } private List getAllDriversByCarId(Long carId) { - String query = "SELECT id, name, license_number " - + "FROM cars_drivers cd " - + "JOIN drivers d ON cd.driver_id = d.id " - + "WHERE car_id = ? AND is_deleted = false"; + String query = "SELECT id, name, license_number, login, password " + + "FROM cars_drivers cd " + + "JOIN drivers d ON cd.driver_id = d.id " + + "WHERE car_id = ? AND is_deleted = false"; try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = connection.prepareStatement(query)) { @@ -211,10 +211,14 @@ private Driver parseDriverFromResultSet(ResultSet resultSet) throws SQLException Long driverId = resultSet.getObject("id", Long.class); String name = resultSet.getString("name"); String licenseNumber = resultSet.getString("license_number"); + String login = resultSet.getString("login"); + String password = resultSet.getString("password"); Driver driver = new Driver(); driver.setId(driverId); driver.setName(name); driver.setLicenseNumber(licenseNumber); + driver.setLogin(login); + driver.setPassword(password); return driver; } diff --git a/src/main/java/taxi/dao/DriverDao.java b/src/main/java/taxi/dao/DriverDao.java index 83440d530..e9c38d2a5 100644 --- a/src/main/java/taxi/dao/DriverDao.java +++ b/src/main/java/taxi/dao/DriverDao.java @@ -1,6 +1,8 @@ package taxi.dao; +import java.util.Optional; import taxi.model.Driver; public interface DriverDao extends GenericDao { + Optional findByLogin(String login); } diff --git a/src/main/java/taxi/dao/DriverDaoImpl.java b/src/main/java/taxi/dao/DriverDaoImpl.java index f5e18f2a2..cd7600159 100644 --- a/src/main/java/taxi/dao/DriverDaoImpl.java +++ b/src/main/java/taxi/dao/DriverDaoImpl.java @@ -17,13 +17,16 @@ public class DriverDaoImpl implements DriverDao { @Override public Driver create(Driver driver) { - String query = "INSERT INTO drivers (name, license_number) " - + "VALUES (?, ?)"; + String query = "INSERT INTO drivers (name, license_number, login, password) " + + "VALUES (?, ?, ?, ?)"; try (Connection connection = ConnectionUtil.getConnection(); - PreparedStatement statement = connection.prepareStatement(query, - Statement.RETURN_GENERATED_KEYS)) { + PreparedStatement statement = + connection.prepareStatement(query, + Statement.RETURN_GENERATED_KEYS)) { statement.setString(1, driver.getName()); statement.setString(2, driver.getLicenseNumber()); + statement.setString(3, driver.getLogin()); + statement.setString(4, driver.getPassword()); statement.executeUpdate(); ResultSet resultSet = statement.getGeneratedKeys(); if (resultSet.next()) { @@ -71,8 +74,8 @@ public List getAll() { @Override public Driver update(Driver driver) { String query = "UPDATE drivers " - + "SET name = ?, license_number = ? " - + "WHERE id = ? AND is_deleted = FALSE"; + + "SET name = ?, license_number = ?, login = ?, password = ? " + + "WHERE id = ? AND is_deleted = FALSE"; try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = connection.prepareStatement(query)) { @@ -98,14 +101,38 @@ public boolean delete(Long id) { } } + @Override + public Optional findByLogin(String login) { + String query = "SELECT * " + + "FROM drivers " + + "WHERE login = ? AND is_deleted = FALSE"; + try (Connection connection = ConnectionUtil.getConnection(); + PreparedStatement statement + = connection.prepareStatement(query)) { + statement.setString(1, login); + Driver driver = null; + ResultSet resultSet = statement.executeQuery(); + if (resultSet.next()) { + driver = parseDriverFromResultSet(resultSet); + } + return Optional.ofNullable(driver); + } catch (SQLException ex) { + throw new DataProcessingException("Can't not find driver with login " + login, ex); + } + } + private Driver parseDriverFromResultSet(ResultSet resultSet) throws SQLException { Long id = resultSet.getObject("id", Long.class); String name = resultSet.getString("name"); String licenseNumber = resultSet.getString("license_number"); + String login = resultSet.getString("login"); + String password = resultSet.getString("password"); Driver driver = new Driver(); driver.setId(id); driver.setName(name); driver.setLicenseNumber(licenseNumber); + driver.setLogin(login); + driver.setPassword(password); return driver; } } diff --git a/src/main/java/taxi/filter/AuthenticationFilter.java b/src/main/java/taxi/filter/AuthenticationFilter.java new file mode 100644 index 000000000..1a6dd09ad --- /dev/null +++ b/src/main/java/taxi/filter/AuthenticationFilter.java @@ -0,0 +1,44 @@ +package taxi.filter; + +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +@WebFilter(filterName = "authenticationFilter", urlPatterns = {"/*"}) +public class AuthenticationFilter implements Filter { + private Set allowedUrls = new HashSet(); + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + allowedUrls.add("/login"); + allowedUrls.add("/drivers/add"); + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + HttpServletRequest req = (HttpServletRequest) request; + HttpServletResponse resp = (HttpServletResponse) response; + HttpSession session = req.getSession(); + Long userId = (Long) session.getAttribute("user_id"); + if (userId == null && allowedUrls.contains(req.getServletPath())) { + chain.doFilter(req, resp); + return; + } + if (userId == null) { + resp.sendRedirect(req.getContextPath() + "/login"); + return; + } + chain.doFilter(req, resp); + } +} diff --git a/src/main/java/taxi/model/Driver.java b/src/main/java/taxi/model/Driver.java index 9c375f94c..740743dbf 100644 --- a/src/main/java/taxi/model/Driver.java +++ b/src/main/java/taxi/model/Driver.java @@ -6,6 +6,8 @@ public class Driver { private Long id; private String name; private String licenseNumber; + private String login; + private String password; public Driver() { } @@ -57,4 +59,20 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(id, name, licenseNumber); } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } } diff --git a/src/main/java/taxi/service/AuthenticationService.java b/src/main/java/taxi/service/AuthenticationService.java new file mode 100644 index 000000000..b76d77a81 --- /dev/null +++ b/src/main/java/taxi/service/AuthenticationService.java @@ -0,0 +1,8 @@ +package taxi.service; + +import javax.naming.AuthenticationException; +import taxi.model.Driver; + +public interface AuthenticationService { + Driver login(String login, String password) throws AuthenticationException; +} diff --git a/src/main/java/taxi/service/AuthenticationServiceImpl.java b/src/main/java/taxi/service/AuthenticationServiceImpl.java new file mode 100644 index 000000000..9d13eced9 --- /dev/null +++ b/src/main/java/taxi/service/AuthenticationServiceImpl.java @@ -0,0 +1,24 @@ +package taxi.service; + +import javax.naming.AuthenticationException; +import taxi.dao.DriverDao; +import taxi.lib.Inject; +import taxi.lib.Service; +import taxi.model.Driver; + +@Service +public class AuthenticationServiceImpl implements AuthenticationService { + @Inject + private DriverDao driverDao; + + @Override + public Driver login(String login, String password) throws AuthenticationException { + Driver driver = driverDao.findByLogin(login) + .orElseThrow(() -> new AuthenticationException( + "Username or password was incorrect")); + if (driver.getPassword().equals(password)) { + return driver; + } + throw new AuthenticationException("Username or password was incorrect"); + } +} diff --git a/src/main/java/taxi/util/ConnectionUtil.java b/src/main/java/taxi/util/ConnectionUtil.java index 9a94e69a2..8b033f65a 100644 --- a/src/main/java/taxi/util/ConnectionUtil.java +++ b/src/main/java/taxi/util/ConnectionUtil.java @@ -6,10 +6,10 @@ import java.util.Properties; public class ConnectionUtil { - private static final String URL = "YOUR DATABASE URL"; - private static final String USERNAME = "YOUR USERNAME"; - private static final String PASSWORD = "YOUR PASSWORD"; - private static final String JDBC_DRIVER = "YOUR DRIVER"; + private static final String URL = "jdbc:mysql://localhost:3306/taxi?serverTimezone=Europe/Kiev"; + private static final String USERNAME = "root"; + private static final String PASSWORD = "matebest"; + private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static { try { diff --git a/src/main/resources/init_db.sql b/src/main/resources/init_db.sql index 2acabb883..b01f5ea7a 100644 --- a/src/main/resources/init_db.sql +++ b/src/main/resources/init_db.sql @@ -11,6 +11,8 @@ CREATE TABLE `drivers` ( `id` BIGINT(0) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `license_number` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `login` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `password` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `is_deleted` BIT(1) NOT NULL DEFAULT b'0', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; diff --git a/src/main/webapp/WEB-INF/views/cars/add.jsp b/src/main/webapp/WEB-INF/views/cars/add.jsp index c23ba0b4f..b2650b441 100644 --- a/src/main/webapp/WEB-INF/views/cars/add.jsp +++ b/src/main/webapp/WEB-INF/views/cars/add.jsp @@ -8,6 +8,7 @@ Add car +<%@include file="/WEB-INF/views/logout.jsp" %>

Add car:

diff --git a/src/main/webapp/WEB-INF/views/cars/all.jsp b/src/main/webapp/WEB-INF/views/cars/all.jsp index 84f046299..5b08ea854 100644 --- a/src/main/webapp/WEB-INF/views/cars/all.jsp +++ b/src/main/webapp/WEB-INF/views/cars/all.jsp @@ -8,6 +8,7 @@ All cars +<%@include file="/WEB-INF/views/logout.jsp" %>

All cars:

diff --git a/src/main/webapp/WEB-INF/views/cars/drivers/add.jsp b/src/main/webapp/WEB-INF/views/cars/drivers/add.jsp index d281d5d72..c782851aa 100644 --- a/src/main/webapp/WEB-INF/views/cars/drivers/add.jsp +++ b/src/main/webapp/WEB-INF/views/cars/drivers/add.jsp @@ -8,6 +8,7 @@ Add driver to car +<%@include file="/WEB-INF/views/logout.jsp" %>

Add driver to car:

diff --git a/src/main/webapp/WEB-INF/views/css/table_dark.css b/src/main/webapp/WEB-INF/views/css/table_dark.css index 11a147b92..e490691f5 100644 --- a/src/main/webapp/WEB-INF/views/css/table_dark.css +++ b/src/main/webapp/WEB-INF/views/css/table_dark.css @@ -8,12 +8,14 @@ background: #FEF4AB; margin: auto; } + .table_dark th { color: #7C5FAB; border-bottom: 1px solid #98E2CA; padding: 12px 17px; font-size: 14px; } + .table_dark td { color: #7C5FAB; border-bottom: 1px solid #98E2CA; @@ -21,12 +23,23 @@ padding: 7px 17px; font-size: 14px; } + .table_dark tr:last-child td { border-bottom: none; } + .table_dark td:last-child { border-right: none; } + .table_dark tr:hover td { text-decoration: underline; } + +.button-container button { + font-size: large; + width: auto; + height: auto; + position: relative; + align-items: center; +} diff --git a/src/main/webapp/WEB-INF/views/drivers/add.jsp b/src/main/webapp/WEB-INF/views/drivers/add.jsp index 4ad7cee44..2ad0d4c30 100644 --- a/src/main/webapp/WEB-INF/views/drivers/add.jsp +++ b/src/main/webapp/WEB-INF/views/drivers/add.jsp @@ -8,13 +8,15 @@ All drivers - +<%@include file="/WEB-INF/views/logout.jsp" %>
+

Add driver:

- + + +
Name License numberAddLoginPassword
@@ -24,9 +26,17 @@ - + + +
+
+ +
+ + diff --git a/src/main/webapp/WEB-INF/views/drivers/all.jsp b/src/main/webapp/WEB-INF/views/drivers/all.jsp index 776101f73..e694996a2 100644 --- a/src/main/webapp/WEB-INF/views/drivers/all.jsp +++ b/src/main/webapp/WEB-INF/views/drivers/all.jsp @@ -8,6 +8,7 @@ All drivers +<%@include file="/WEB-INF/views/logout.jsp" %>

All drivers:

diff --git a/src/main/webapp/WEB-INF/views/index.jsp b/src/main/webapp/WEB-INF/views/index.jsp index b9b5e9d2b..8a9187aad 100644 --- a/src/main/webapp/WEB-INF/views/index.jsp +++ b/src/main/webapp/WEB-INF/views/index.jsp @@ -7,6 +7,7 @@ My team +<%@include file="/WEB-INF/views/logout.jsp" %>

Hello, mates

diff --git a/src/main/webapp/WEB-INF/views/login.jsp b/src/main/webapp/WEB-INF/views/login.jsp new file mode 100644 index 000000000..303efc6d7 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/login.jsp @@ -0,0 +1,15 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Login page + + +

${errorMsg}

+ + Enter your login:
+ Enter your password: + + + + + diff --git a/src/main/webapp/WEB-INF/views/logout.jsp b/src/main/webapp/WEB-INF/views/logout.jsp new file mode 100644 index 000000000..1eaf893ed --- /dev/null +++ b/src/main/webapp/WEB-INF/views/logout.jsp @@ -0,0 +1,16 @@ +<%-- + Created by IntelliJ IDEA. + User: toxauz + Date: 30.07.2023 + Time: 13:48 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Logout + + +

Logout

+ + diff --git a/src/main/webapp/WEB-INF/views/manufacturers/add.jsp b/src/main/webapp/WEB-INF/views/manufacturers/add.jsp index 108d3541c..ceb16f8a0 100644 --- a/src/main/webapp/WEB-INF/views/manufacturers/add.jsp +++ b/src/main/webapp/WEB-INF/views/manufacturers/add.jsp @@ -8,6 +8,7 @@ Manufacturers +<%@include file="/WEB-INF/views/logout.jsp" %>

Add manufacturer:

diff --git a/src/main/webapp/WEB-INF/views/manufacturers/all.jsp b/src/main/webapp/WEB-INF/views/manufacturers/all.jsp index fd3eafdbf..b07a2ece9 100644 --- a/src/main/webapp/WEB-INF/views/manufacturers/all.jsp +++ b/src/main/webapp/WEB-INF/views/manufacturers/all.jsp @@ -8,6 +8,7 @@ All manufacturers +<%@include file="/WEB-INF/views/logout.jsp" %>

All manufacturers:

diff --git a/src/main/webapp/web.xml b/src/main/webapp/web.xml index 284381048..1210fc5f2 100644 --- a/src/main/webapp/web.xml +++ b/src/main/webapp/web.xml @@ -105,4 +105,28 @@ deleteManufacturer/manufacturers/delete + + getMyCurrentCarsController + taxi.controller.car.GetMyCurrentCarsController + + + getMyCurrentCarsController + /drivers/cars + + + loginController + taxi.controller.LoginController + + + loginController + /login + + + logoutController + taxi.controller.LogoutController + + + logoutController + /logout +