diff --git a/src/main/java/taxi/controller/LoginController.java b/src/main/java/taxi/controller/LoginController.java new file mode 100644 index 000000000..0643a3820 --- /dev/null +++ b/src/main/java/taxi/controller/LoginController.java @@ -0,0 +1,41 @@ +package taxi.controller; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import taxi.exception.AuthenticationException; +import taxi.lib.Injector; +import taxi.model.Driver; +import taxi.service.AuthenticationService; + +@WebServlet(urlPatterns = "/login") +public class LoginController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("taxi"); + + private final AuthenticationService authenticationService = + (AuthenticationService) INJECTOR.getInstance(AuthenticationService.class); + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(req, resp); + } + + @Override + public 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); + req.getSession().setAttribute("driverId", driver.getId()); + resp.sendRedirect(req.getContextPath() + "/index"); + } catch (AuthenticationException e) { + req.setAttribute("errorMessage", 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..82d39064c --- /dev/null +++ b/src/main/java/taxi/controller/LogoutController.java @@ -0,0 +1,18 @@ +package taxi.controller; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@WebServlet(urlPatterns = "/logout") +public class LogoutController extends HttpServlet { + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + req.getSession().invalidate(); + resp.sendRedirect(req.getContextPath() + "/login"); + } +} 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..f3ad8ca2e --- /dev/null +++ b/src/main/java/taxi/controller/car/GetMyCurrentCarsController.java @@ -0,0 +1,28 @@ +package taxi.controller.car; + +import java.io.IOException; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import taxi.lib.Injector; +import taxi.model.Car; +import taxi.service.CarService; + +@WebServlet(urlPatterns = "/cars/my") +public class GetMyCurrentCarsController extends HttpServlet { + private static final Injector INJECTOR = Injector.getInstance("taxi"); + + private final CarService carService = (CarService) INJECTOR.getInstance(CarService.class); + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + Long driverId = (Long) req.getSession().getAttribute("driverId"); + List myCars = carService.getAllByDriver(driverId); + req.setAttribute("cars", myCars); + 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..e6da4dd22 100644 --- a/src/main/java/taxi/controller/driver/AddDriverController.java +++ b/src/main/java/taxi/controller/driver/AddDriverController.java @@ -24,7 +24,9 @@ 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"); - Driver driver = new Driver(name, licenseNumber); + String login = req.getParameter("login"); + String password = req.getParameter("password"); + Driver driver = new Driver(name, licenseNumber, login, password); driverService.create(driver); resp.sendRedirect(req.getContextPath() + "/drivers/add"); } diff --git a/src/main/java/taxi/controller/driver/DeleteDriverController.java b/src/main/java/taxi/controller/driver/DeleteDriverController.java index d0cbf0d4e..a651e993a 100644 --- a/src/main/java/taxi/controller/driver/DeleteDriverController.java +++ b/src/main/java/taxi/controller/driver/DeleteDriverController.java @@ -4,6 +4,7 @@ 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.service.DriverService; @@ -14,7 +15,15 @@ public class DeleteDriverController extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - driverService.delete(Long.parseLong(req.getParameter("id"))); + Long id = Long.parseLong(req.getParameter("id")); + driverService.delete(id); + + HttpSession session = req.getSession(); + Long sessionDriverId = (Long) session.getAttribute("driver_id"); + if (id.equals(sessionDriverId)) { + session.invalidate(); + } + resp.sendRedirect(req.getContextPath() + "/drivers"); } } diff --git a/src/main/java/taxi/dao/CarDaoImpl.java b/src/main/java/taxi/dao/CarDaoImpl.java index 586ccb595..aface2ddd 100644 --- a/src/main/java/taxi/dao/CarDaoImpl.java +++ b/src/main/java/taxi/dao/CarDaoImpl.java @@ -188,7 +188,7 @@ private void deleteAllDrivers(Car car) { } private List getAllDriversByCarId(Long carId) { - String query = "SELECT id, name, license_number " + 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"; @@ -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..174292ef2 100644 --- a/src/main/java/taxi/dao/DriverDaoImpl.java +++ b/src/main/java/taxi/dao/DriverDaoImpl.java @@ -17,13 +17,15 @@ 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)) { 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,14 +73,16 @@ public List getAll() { @Override public Driver update(Driver driver) { String query = "UPDATE drivers " - + "SET name = ?, license_number = ? " + + "SET name = ?, license_number = ?, login = ?, password = ? " + "WHERE id = ? AND is_deleted = FALSE"; try (Connection connection = ConnectionUtil.getConnection(); PreparedStatement statement = connection.prepareStatement(query)) { statement.setString(1, driver.getName()); statement.setString(2, driver.getLicenseNumber()); - statement.setLong(3, driver.getId()); + statement.setString(3, driver.getLogin()); + statement.setString(4, driver.getPassword()); + statement.setLong(5, driver.getId()); statement.executeUpdate(); return driver; } catch (SQLException e) { @@ -98,14 +102,35 @@ 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); + ResultSet resultSet = statement.executeQuery(); + Driver driver = null; + if (resultSet.next()) { + driver = parseDriverFromResultSet(resultSet); + } + return Optional.ofNullable(driver); + } catch (SQLException e) { + throw new DataProcessingException("Can't get driver by login " + login, e); + } + } + 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/exception/AuthenticationException.java b/src/main/java/taxi/exception/AuthenticationException.java new file mode 100644 index 000000000..a80dfd9e9 --- /dev/null +++ b/src/main/java/taxi/exception/AuthenticationException.java @@ -0,0 +1,7 @@ +package taxi.exception; + +public class AuthenticationException extends Exception { + public AuthenticationException(String message) { + super(message); + } +} diff --git a/src/main/java/taxi/filter/AuthenticationFilter.java b/src/main/java/taxi/filter/AuthenticationFilter.java new file mode 100644 index 000000000..6f2ab608c --- /dev/null +++ b/src/main/java/taxi/filter/AuthenticationFilter.java @@ -0,0 +1,41 @@ +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(urlPatterns = "/*") +public class AuthenticationFilter implements Filter { + private static final Set ALLOWED_URLS = new HashSet<>(); + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + ALLOWED_URLS.add("/login"); + ALLOWED_URLS.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 driverId = (Long) session.getAttribute("driverId"); + if (driverId == null && !ALLOWED_URLS.contains(req.getServletPath())) { + resp.sendRedirect(req.getContextPath() + "/login"); + return; + } + chain.doFilter(request, response); + } +} diff --git a/src/main/java/taxi/model/Driver.java b/src/main/java/taxi/model/Driver.java index 9c375f94c..4645b1e1c 100644 --- a/src/main/java/taxi/model/Driver.java +++ b/src/main/java/taxi/model/Driver.java @@ -6,13 +6,17 @@ public class Driver { private Long id; private String name; private String licenseNumber; + private String login; + private String password; public Driver() { } - public Driver(String name, String licenseNumber) { + public Driver(String name, String licenseNumber, String login, String password) { this.name = name; this.licenseNumber = licenseNumber; + this.login = login; + this.password = password; } public Long getId() { @@ -39,6 +43,22 @@ public void setLicenseNumber(String licenseNumber) { this.licenseNumber = 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; + } + @Override public boolean equals(Object o) { if (this == o) { @@ -50,11 +70,23 @@ public boolean equals(Object o) { Driver driver = (Driver) o; return Objects.equals(id, driver.id) && Objects.equals(name, driver.name) - && Objects.equals(licenseNumber, driver.licenseNumber); + && Objects.equals(licenseNumber, driver.licenseNumber) + && Objects.equals(login, driver.login) + && Objects.equals(password, driver.password); } @Override public int hashCode() { - return Objects.hash(id, name, licenseNumber); + return Objects.hash(id, name, licenseNumber, login, password); + } + + @Override + public String toString() { + return "Driver{" + + "id=" + id + + ", name='" + name + '\'' + + ", licenseNumber='" + licenseNumber + '\'' + + ", login='" + login + '\'' + + '}'; } } diff --git a/src/main/java/taxi/service/AuthenticationService.java b/src/main/java/taxi/service/AuthenticationService.java new file mode 100644 index 000000000..e9ffa0eea --- /dev/null +++ b/src/main/java/taxi/service/AuthenticationService.java @@ -0,0 +1,8 @@ +package taxi.service; + +import taxi.exception.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..9c6a98c94 --- /dev/null +++ b/src/main/java/taxi/service/AuthenticationServiceImpl.java @@ -0,0 +1,22 @@ +package taxi.service; + +import java.util.Optional; +import taxi.exception.AuthenticationException; +import taxi.lib.Inject; +import taxi.lib.Service; +import taxi.model.Driver; + +@Service +public class AuthenticationServiceImpl implements AuthenticationService { + @Inject + private DriverService driverService; + + @Override + public Driver login(String login, String password) throws AuthenticationException { + Optional driver = driverService.findByLogin(login); + if (driver.isEmpty() || !driver.get().getPassword().equals(password)) { + throw new AuthenticationException("Invalid login or password"); + } + return driver.get(); + } +} diff --git a/src/main/java/taxi/service/DriverService.java b/src/main/java/taxi/service/DriverService.java index faddf81b3..3dbdfe2f3 100644 --- a/src/main/java/taxi/service/DriverService.java +++ b/src/main/java/taxi/service/DriverService.java @@ -1,6 +1,8 @@ package taxi.service; +import java.util.Optional; import taxi.model.Driver; public interface DriverService extends GenericService { + Optional findByLogin(String login); } diff --git a/src/main/java/taxi/service/DriverServiceImpl.java b/src/main/java/taxi/service/DriverServiceImpl.java index e2f554b3f..cf14b8e39 100644 --- a/src/main/java/taxi/service/DriverServiceImpl.java +++ b/src/main/java/taxi/service/DriverServiceImpl.java @@ -2,6 +2,7 @@ import java.util.List; import java.util.NoSuchElementException; +import java.util.Optional; import taxi.dao.DriverDao; import taxi.lib.Inject; import taxi.lib.Service; @@ -38,4 +39,9 @@ public Driver update(Driver driver) { public boolean delete(Long id) { return driverDao.delete(id); } + + @Override + public Optional findByLogin(String login) { + return driverDao.findByLogin(login); + } } diff --git a/src/main/resources/init_db.sql b/src/main/resources/init_db.sql index 2acabb883..7ee0e4f73 100644 --- a/src/main/resources/init_db.sql +++ b/src/main/resources/init_db.sql @@ -7,52 +7,71 @@ SET FOREIGN_KEY_CHECKS = 0; -- Table structure for drivers -- ---------------------------- DROP TABLE IF EXISTS `drivers`; -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, - `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; +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, + CONSTRAINT `UC_login` UNIQUE (`login`) +) ENGINE = InnoDB + CHARACTER SET = utf8 + COLLATE = utf8_general_ci + ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for manufacturers -- ---------------------------- DROP TABLE IF EXISTS `manufacturers`; -CREATE TABLE `manufacturers` ( - `id` BIGINT(0) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `country` 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; +CREATE TABLE `manufacturers` +( + `id` BIGINT(0) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `country` 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; -- ---------------------------- -- Table structure for cars -- ---------------------------- DROP TABLE IF EXISTS `cars`; -CREATE TABLE `cars` ( - `id` BIGINT(0) UNSIGNED NOT NULL AUTO_INCREMENT, - `model` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `manufacturer_id` BIGINT(0) UNSIGNED NOT NULL, - `is_deleted` BIT(1) NOT NULL DEFAULT b'0', - PRIMARY KEY (`id`) USING BTREE, - INDEX `FK_manufacturer_id`(`manufacturer_id`) USING BTREE, - CONSTRAINT `FK_manufacturer_id` FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturers` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +CREATE TABLE `cars` +( + `id` BIGINT(0) UNSIGNED NOT NULL AUTO_INCREMENT, + `model` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `manufacturer_id` BIGINT(0) UNSIGNED NOT NULL, + `is_deleted` BIT(1) NOT NULL DEFAULT b'0', + PRIMARY KEY (`id`) USING BTREE, + INDEX `FK_manufacturer_id` (`manufacturer_id`) USING BTREE, + CONSTRAINT `FK_manufacturer_id` FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturers` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB + CHARACTER SET = utf8 + COLLATE = utf8_general_ci + ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for cars_drivers -- ---------------------------- DROP TABLE IF EXISTS `cars_drivers`; -CREATE TABLE `cars_drivers` ( - `car_id` BIGINT(0) UNSIGNED NOT NULL, - `driver_id` BIGINT(0) UNSIGNED NOT NULL, - PRIMARY KEY (`car_id`, `driver_id`) USING BTREE, - INDEX `driver_id`(`driver_id`) USING BTREE, - INDEX `car_id`(`car_id`) USING BTREE, - CONSTRAINT `car_id` FOREIGN KEY (`car_id`) REFERENCES `cars` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, - CONSTRAINT `driver_id` FOREIGN KEY (`driver_id`) REFERENCES `drivers` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +CREATE TABLE `cars_drivers` +( + `car_id` BIGINT(0) UNSIGNED NOT NULL, + `driver_id` BIGINT(0) UNSIGNED NOT NULL, + PRIMARY KEY (`car_id`, `driver_id`) USING BTREE, + INDEX `driver_id` (`driver_id`) USING BTREE, + INDEX `car_id` (`car_id`) USING BTREE, + CONSTRAINT `car_id` FOREIGN KEY (`car_id`) REFERENCES `cars` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `driver_id` FOREIGN KEY (`driver_id`) REFERENCES `drivers` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB + CHARACTER SET = utf8 + COLLATE = utf8_general_ci + ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/webapp/WEB-INF/views/cars/add.jsp b/src/main/webapp/WEB-INF/views/cars/add.jsp index c23ba0b4f..cbb19975c 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="../header.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..a289f2ad7 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="../header.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..a9fdff194 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="../../header.jsp"%>

Add driver to car:

diff --git a/src/main/webapp/WEB-INF/views/drivers/add.jsp b/src/main/webapp/WEB-INF/views/drivers/add.jsp index 4ad7cee44..166a2c510 100644 --- a/src/main/webapp/WEB-INF/views/drivers/add.jsp +++ b/src/main/webapp/WEB-INF/views/drivers/add.jsp @@ -8,12 +8,15 @@ All drivers +<%@ include file="../header.jsp"%>

Add driver:

+ + @@ -23,6 +26,12 @@ + + diff --git a/src/main/webapp/WEB-INF/views/drivers/all.jsp b/src/main/webapp/WEB-INF/views/drivers/all.jsp index 776101f73..29aae8b15 100644 --- a/src/main/webapp/WEB-INF/views/drivers/all.jsp +++ b/src/main/webapp/WEB-INF/views/drivers/all.jsp @@ -8,12 +8,14 @@ All drivers +<%@ include file="../header.jsp"%>

All drivers:

Name License numberLoginPassword Add
+ + + +
+ @@ -27,6 +29,9 @@ + diff --git a/src/main/webapp/WEB-INF/views/header.jsp b/src/main/webapp/WEB-INF/views/header.jsp new file mode 100644 index 000000000..b4eaae3ac --- /dev/null +++ b/src/main/webapp/WEB-INF/views/header.jsp @@ -0,0 +1,21 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Title + + +
+ + +

Login

+

Create an account

+
+ +

My cars

+

Logout

+
+
+
+ + diff --git a/src/main/webapp/WEB-INF/views/index.jsp b/src/main/webapp/WEB-INF/views/index.jsp index b9b5e9d2b..9b002baff 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="header.jsp"%>

Hello, mates

ID Name License numberLogin Delete
+ + DELETE
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..aa3fa2762 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/login.jsp @@ -0,0 +1,39 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + + Login + + + +

+ Login: + ${errorMessage} +

+

+ Or + create an account +

+
+ + + + + + + + + + +
LoginPasswordLogin
+ + + + + +
+ + diff --git a/src/main/webapp/WEB-INF/views/manufacturers/add.jsp b/src/main/webapp/WEB-INF/views/manufacturers/add.jsp index 108d3541c..810f3a2a3 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="../header.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..6ff777199 100644 --- a/src/main/webapp/WEB-INF/views/manufacturers/all.jsp +++ b/src/main/webapp/WEB-INF/views/manufacturers/all.jsp @@ -8,12 +8,13 @@ All manufacturers +<%@ include file="../header.jsp"%>

All manufacturers:

- +
ID NameLicense numberCountry Delete