+ * Passwords should be stored in a {@code char[]} so that it can be filled
+ * with zeros after use instead of lingering on the heap and elsewhere.
+ *
+ * @param password The password to hash
+ * @return a secure authentication token to be stored for later
+ * authentication
+ * @deprecated Use {@link #hash(char[])} instead
+ */
+ @Deprecated
+ public String hash(String password) {
+ return hash(password.toCharArray());
+ }
+
+}
diff --git a/src/main/java/g3/servelets/Home.java b/src/main/java/g3/servelets/Home.java
new file mode 100644
index 0000000000000000000000000000000000000000..a202bc85e7fdb6b2dac1d60f3f5526715be1ebdf
--- /dev/null
+++ b/src/main/java/g3/servelets/Home.java
@@ -0,0 +1,34 @@
+package g3.servelets;
+
+import g3.dao.DaoFactory;
+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(name = "home", urlPatterns = {"/home"})
+public class Home extends HttpServlet {
+
+ private static final String VIEW = "/WEB-INF/Home.jsp";
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ // On récupère les infos depuis la DB
+
+
+ // On appelle la vue
+ request.getServletContext()
+ .getRequestDispatcher("/WEB-INF/Home.jsp")
+ .forward(request, response);
+
+ }
+
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }
+}
diff --git a/src/main/java/g3/servelets/Login.java b/src/main/java/g3/servelets/Login.java
new file mode 100644
index 0000000000000000000000000000000000000000..91a1873877a25949b16f14ba7046e22a776f1479
--- /dev/null
+++ b/src/main/java/g3/servelets/Login.java
@@ -0,0 +1,57 @@
+package g3.servelets;
+
+import g3.Forms.LoginFormChecker;
+import g3.beans.User;
+import java.io.*;
+import javax.servlet.*;
+import javax.servlet.annotation.*;
+import javax.servlet.http.*;
+
+@WebServlet(name = "login", urlPatterns = {"/login"})
+public class Login extends HttpServlet {
+
+ private static final String VIEW = "/WEB-INF/Login.jsp";
+ private static final String VIEW_ADMIN = "/WEB-INF/Admin.jsp";
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ if (request.getSession().getAttribute("user") == null) {
+ RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher(VIEW);
+ dispatcher.forward(request, response);
+ } else {
+ User myUser = (User) request.getSession().getAttribute("user");
+ if (myUser.getId_user() == 1) {
+ request.getServletContext().getRequestDispatcher(VIEW_ADMIN).forward(request, response);
+ } else {
+ response.sendRedirect(request.getContextPath() + "/home");
+ }
+ }
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ LoginFormChecker checker = new LoginFormChecker(request);
+ if (!checker.checkForm()) {
+ //Assurer que l'utilisateur n'est plus en session
+ request.getSession().invalidate();
+
+ request.setAttribute("errors", checker.getErrors());
+ request.setAttribute("userData", checker.getBean());
+
+ request.getServletContext()
+ .getRequestDispatcher(VIEW)
+ .forward(request, response);
+
+ } else {
+
+ //je met l'utilisateur en session
+ request.getSession().setAttribute("user", checker.getBean());
+
+ response.sendRedirect(request.getContextPath() + "/home");
+
+ }
+ }
+
+}
diff --git a/src/main/java/g3/servelets/Logout.java b/src/main/java/g3/servelets/Logout.java
new file mode 100644
index 0000000000000000000000000000000000000000..09a3ba55bf34084f9181274d2b4d253ec262d07f
--- /dev/null
+++ b/src/main/java/g3/servelets/Logout.java
@@ -0,0 +1,55 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package g3.servelets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author stag
+ */
+@WebServlet(name = "Logout", urlPatterns = {"/logout"})
+public class Logout extends HttpServlet {
+
+
+ private static final String VIEW = "/WEB-INF/Home.jsp";
+
+
+
+ // GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ if (request.getSession().getAttribute("user") == null) {
+ RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher(VIEW);
+ dispatcher.forward(request, response);
+ } else {
+ //invalidation
+ request.getSession().invalidate();
+ //redirection vers accueil
+ response.sendRedirect(request.getContextPath() + "/home");
+
+ }
+
+
+ }
+
+}
diff --git a/src/main/java/g3/servelets/Profile.java b/src/main/java/g3/servelets/Profile.java
new file mode 100644
index 0000000000000000000000000000000000000000..89d30bd3b137af69dcd6a011d69e89b2f4b8b747
--- /dev/null
+++ b/src/main/java/g3/servelets/Profile.java
@@ -0,0 +1,56 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package g3.servelets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author stag
+ */
+@WebServlet(name = "Profile", urlPatterns = {"/profile"})
+public class Profile extends HttpServlet {
+
+
+ private static final String VIEW = "/WEB-INF/Profile.jsp";
+
+
+
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ //verifier que user est connecté
+ if (request.getSession().getAttribute("user") != null) {
+ request.getRequestDispatcher(VIEW)
+ .forward(request, response);
+ } else {
+ response.sendRedirect(request.getContextPath() + "/login");
+ }
+
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ }
+
+}
diff --git a/src/main/java/g3/servelets/Signin.java b/src/main/java/g3/servelets/Signin.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a7650f9db7af30917e96346b7eb34f7358a0e81
--- /dev/null
+++ b/src/main/java/g3/servelets/Signin.java
@@ -0,0 +1,59 @@
+package g3.servelets;
+
+import g3.Forms.SigninFormChecker;
+import g3.beans.User;
+import java.io.IOException;
+import javax.servlet.RequestDispatcher;
+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(name = "sign-in", urlPatterns = {"/sign-in"})
+public class Signin extends HttpServlet {
+
+ private static final String VIEW = "/WEB-INF/Signin.jsp";
+ private static final String VIEW_ADMIN = "/WEB-INF/Admin.jsp";
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ if (request.getSession().getAttribute("user") == null) {
+ RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher(VIEW);
+ dispatcher.forward(request, response);
+ } else {
+ User myUser = (User) request.getSession().getAttribute("user");
+ if (myUser.getId_user() == 1) {
+ request.getServletContext().getRequestDispatcher(VIEW_ADMIN).forward(request, response);
+ } else {
+ response.sendRedirect(request.getContextPath() + "/home");
+ }
+ }
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ SigninFormChecker checker = new SigninFormChecker(request);
+ if (!checker.checkForm()) {
+ //Assurer que l'utilisateur n'est plus en session
+ request.getSession().invalidate();
+
+ request.setAttribute("errors", checker.getErrors());
+ //request.setAttribute("userD", checker.getBean());
+
+ request.getServletContext()
+ .getRequestDispatcher(VIEW)
+ .forward(request, response);
+
+ } else {
+
+ //je met l'utilisateur en session
+ request.getSession().setAttribute("user", checker.getBean());
+
+ response.sendRedirect(request.getContextPath() + "/home");
+
+ }
+ }
+}
diff --git a/src/main/webapp/WEB-INF/Admin.jsp b/src/main/webapp/WEB-INF/Admin.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..a9def0c34afc5a7394c28ded948b74abc2146f10
--- /dev/null
+++ b/src/main/webapp/WEB-INF/Admin.jsp
@@ -0,0 +1,17 @@
+<%--
+ Document : Admin
+ Created on : 5 mai 2023, 13:03:36
+ Author : stag
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+
+
+
+ Hello World!
+
+
diff --git a/src/main/webapp/WEB-INF/Home.jsp b/src/main/webapp/WEB-INF/Home.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..2c81d7232a272277fa72941e9ddba9ff96afe7c1
--- /dev/null
+++ b/src/main/webapp/WEB-INF/Home.jsp
@@ -0,0 +1,45 @@
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+
+
+ <%@page contentType="text/html" pageEncoding="UTF-8"%>
+ <%@include file="/WEB-INF/jspf/Style.jsp" %>
+ La liste des évenements
+
+ //tableau des évenements
+
+
+ <%@include file="./jspf/Footer.jsp" %>
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/Login.jsp b/src/main/webapp/WEB-INF/Login.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..e94ac3dddb142f94ed07bd49fbc361480a217a0f
--- /dev/null
+++ b/src/main/webapp/WEB-INF/Login.jsp
@@ -0,0 +1,34 @@
+<%@include file="taglibs.jsp" %>
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+
+
+
+ <%@include file="/WEB-INF/jspf/Style.jsp" %>
+
+ Page de connexion
+
+ Vos informations personnelles
+
+
+
+
+ <%@include file="./jspf/Footer.jsp" %>
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/Signin.jsp b/src/main/webapp/WEB-INF/Signin.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..bae04e2a5fb5f246ed413d256720974a82ab9a32
--- /dev/null
+++ b/src/main/webapp/WEB-INF/Signin.jsp
@@ -0,0 +1,40 @@
+<%@include file="taglibs.jsp" %>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+
+
+
+
+ <%@include file="/WEB-INF/jspf/Style.jsp" %>
+
+
+
+ Votre id :
+ ${sessionScope.user.id}
+
+
+ Votre Pseudo :
+ ${sessionScope.user.pseudo}
+
+
+ Votre Contact :
+ ${sessionScope.user.contact}
+
+
+ Votre mot de passe :
+ ${sessionScope.user.password}
+ Page d'inscription
+
+
+ <%@include file="./jspf/Footer.jsp" %>
+
+
+
diff --git a/src/main/webapp/WEB-INF/Style.css b/src/main/webapp/WEB-INF/Style.css
new file mode 100644
index 0000000000000000000000000000000000000000..2a1a1b79b50d3caa106deaa2f1cc34a10f6e15df
--- /dev/null
+++ b/src/main/webapp/WEB-INF/Style.css
@@ -0,0 +1,56 @@
+form {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ margin: 0 auto;
+ width: 40%;
+ padding: 30px;
+ border-radius: 10px;
+ background: #2B3A42;
+ box-shadow: 0px 5px 20px rgba(0, 0, 0, 0.5);
+}
+
+h1 {
+ color: #F7DC6F;
+ text-align: center;
+ font-size: 2.5rem;
+}
+
+label {
+ color: #F7DC6F;
+ font-size: 1.5rem;
+ font-weight: bold;
+ margin-bottom: 10px;
+}
+
+input[type=text], input[type=password] {
+ padding: 15px;
+ border: none;
+ border-radius: 10px;
+ margin-bottom: 20px;
+ width: 100%;
+ background-color: #F7DC6F;
+ color: #2B3A42;
+ font-size: 1.2rem;
+}
+
+input[type=submit] {
+ background-color: #F7DC6F;
+ color: #2B3A42;
+ padding: 15px 30px;
+ border: none;
+ border-radius: 10px;
+ font-size: 1.2rem;
+ cursor: pointer;
+}
+
+input[type=submit]:hover {
+ background-color: #34495E;
+ color: #F7DC6F;
+}
+
+.error-message {
+ color: red;
+ font-weight: bold;
+}
diff --git a/src/main/webapp/WEB-INF/jspf/Footer.jsp b/src/main/webapp/WEB-INF/jspf/Footer.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..ab31941125225c57804f6442d7d631ac0f6c63e3
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jspf/Footer.jsp
@@ -0,0 +1,29 @@
+<%--
+ Document : Footer
+ Created on : 27 avr. 2023, 12:59:37
+ Author : stag
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
diff --git a/src/main/webapp/WEB-INF/jspf/Header.jsp b/src/main/webapp/WEB-INF/jspf/Header.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..b4426645adab43b11e368caefd4d750114788f1c
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jspf/Header.jsp
@@ -0,0 +1,63 @@
+<%--
+ Document : Header
+ Created on : 27 avr. 2023, 11:07:46
+ Author : stag
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+
diff --git a/src/main/webapp/WEB-INF/jspf/Style.jsp b/src/main/webapp/WEB-INF/jspf/Style.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..f810700d11fbfb94fe689fd780b489888c7c98d1
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jspf/Style.jsp
@@ -0,0 +1,361 @@
+<%--
+ Document : newjsp
+ Created on : 5 mai 2023, 14:01:13
+ Author : stag
+--%>
+
+