From 4634cfd4c2d56ecea44316f6beb768e9c6f8f459 Mon Sep 17 00:00:00 2001 From: "steve.maingana" Date: Mon, 29 Sep 2025 17:52:54 +0200 Subject: [PATCH] Gestion d'authentification --- src/main/java/com/test/bdd/SalarieMysql.java | 84 +++++++++++++++++++ src/main/java/com/test/beans/Salarie.java | 55 ++++++++++++ .../java/com/test/forms/AuthentifForm.java | 25 +++++- .../com/test/servlets/AuthentifServlet.java | 17 ++-- .../java/com/test/servlets/ListeServlet.java | 7 ++ .../com/test/servlets/NouveauServlet.java | 18 ++++ src/main/webapp/WEB-INF/accueilVue.jsp | 10 +-- src/main/webapp/WEB-INF/nouveauClientVue.jsp | 4 + 8 files changed, 204 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/test/bdd/SalarieMysql.java create mode 100644 src/main/java/com/test/beans/Salarie.java diff --git a/src/main/java/com/test/bdd/SalarieMysql.java b/src/main/java/com/test/bdd/SalarieMysql.java new file mode 100644 index 0000000..965acb3 --- /dev/null +++ b/src/main/java/com/test/bdd/SalarieMysql.java @@ -0,0 +1,84 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.test.bdd; + +import com.test.beans.Salarie; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; + +/** + * + * @author steve.maingana + */ +public class SalarieMysql { + // private Connection laConnexion; + private Statement stmt = null; + private ResultSet result = null; + + // public ClientMysql() { + Connection laConnexion = Connexion.getConnect("192.168.100.100", "bdclient", "adminBDClient", "mdpBDClient"); + // } + + public ArrayList readAll() { + ArrayList salaries = new ArrayList(); + + try { + stmt = laConnexion.createStatement(); + + result = stmt.executeQuery("SELECT * FROM salarie"); + while (result.next()) { + Salarie salarie = new Salarie( + result.getInt("id"), + result.getString("login"), + result.getString("mdp"), + result.getInt("admin") + ); + + salaries.add(salarie); + } + + result.close(); + stmt.close(); + } catch (SQLException ex) { + System.out.println("SQLException : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + + return salaries; + } + + public Salarie lireSalarie(String login, String mdp) { + Salarie salarie = null; + + try { + PreparedStatement preparedStmt = laConnexion.prepareStatement("SELECT * FROM salarie WHERE login = ? AND mdp = ?"); + + preparedStmt.setString(1, login); + preparedStmt.setString(2, mdp); + + result = preparedStmt.executeQuery(); + if (result.next()) { + salarie = new Salarie( + result.getInt("id"), + result.getString("login"), + result.getString("mdp"), + result.getInt("admin") + ); + } + } catch (SQLException ex) { + System.out.println("SQLException : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + + return salarie; + } +} + diff --git a/src/main/java/com/test/beans/Salarie.java b/src/main/java/com/test/beans/Salarie.java new file mode 100644 index 0000000..ed8e731 --- /dev/null +++ b/src/main/java/com/test/beans/Salarie.java @@ -0,0 +1,55 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.test.beans; + +/** + * + * @author steve.maingana + */ +public class Salarie { + private int id; + private String login; + private String mdp; + private boolean admin; + + public Salarie(int id, String login, String mdp, int admin) { + this.id = id; + this.login = login; + this.mdp = mdp; + this.admin = admin > 0; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getMdp() { + return mdp; + } + + public void setMdp(String mdp) { + this.mdp = mdp; + } + + public boolean isAdmin() { + return admin; + } + + public void setAdmin(boolean admin) { + this.admin = admin; + } +} diff --git a/src/main/java/com/test/forms/AuthentifForm.java b/src/main/java/com/test/forms/AuthentifForm.java index 9c68635..85a8978 100644 --- a/src/main/java/com/test/forms/AuthentifForm.java +++ b/src/main/java/com/test/forms/AuthentifForm.java @@ -4,6 +4,8 @@ */ package com.test.forms; +import com.test.bdd.SalarieMysql; +import com.test.beans.Salarie; import com.test.beans.User; import jakarta.servlet.http.HttpServletRequest; @@ -24,10 +26,27 @@ public class AuthentifForm { this.resultat = resultat; } + public boolean existeUser(HttpServletRequest request) { + SalarieMysql salarieDB = new SalarieMysql(); + String pseudo = (String) request.getParameter("pseudo"); + String mdp = (String) request.getParameter("mdp"); + Salarie user = salarieDB.lireSalarie(pseudo, mdp); + + boolean existe = user != null; + + if (!existe) { + this.setResultat("Il y a une erreur dans le nom d'utilisateur ou le mot de passe"); + } + + return existe; + } + public boolean controlerAdmin(HttpServletRequest request) { - User admin = new User("Lovelace", "Ada"); - User userSaisi = new User(request.getParameter("pseudo"), request.getParameter("mdp")); - boolean estAdmin = admin.equals(userSaisi); + SalarieMysql salarieDB = new SalarieMysql(); + String pseudo = (String) request.getParameter("pseudo"); + String mdp = (String) request.getParameter("mdp"); + Salarie user = salarieDB.lireSalarie(pseudo, mdp); + boolean estAdmin = user.isAdmin(); if (estAdmin) { this.setResultat("Vous êtes administrateur"); diff --git a/src/main/java/com/test/servlets/AuthentifServlet.java b/src/main/java/com/test/servlets/AuthentifServlet.java index 12e4751..e77abdc 100644 --- a/src/main/java/com/test/servlets/AuthentifServlet.java +++ b/src/main/java/com/test/servlets/AuthentifServlet.java @@ -13,6 +13,7 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; /** * @@ -78,21 +79,21 @@ public class AuthentifServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - + HttpSession maSession = request.getSession(); String pseudo = (String) request.getParameter("pseudo"); String mdp = (String) request.getParameter("mdp"); + AuthentifForm authentification = new AuthentifForm(); + maSession.setAttribute("isAuthentified", false); + if (!pseudo.isBlank() && !mdp.isBlank()) { - if (pseudo.equals(this.monPseudo) && mdp.equals(this.monMdp)) { - request.setAttribute("login", true); + if (authentification.existeUser(request)) { + boolean isAdmin = authentification.controlerAdmin(request); + request.setAttribute("admin", isAdmin); + maSession.setAttribute("isAuthentified", true); } } - AuthentifForm authentification = new AuthentifForm(); - boolean isAdmin = authentification.controlerAdmin(request); - request.setAttribute("authentification", authentification); - request.setAttribute("admin", isAdmin); - RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/accueilVue.jsp"); dispatcher.forward(request, response); } diff --git a/src/main/java/com/test/servlets/ListeServlet.java b/src/main/java/com/test/servlets/ListeServlet.java index d15ab96..260f349 100644 --- a/src/main/java/com/test/servlets/ListeServlet.java +++ b/src/main/java/com/test/servlets/ListeServlet.java @@ -13,6 +13,7 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import java.util.ArrayList; /** @@ -62,6 +63,12 @@ public class ListeServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + HttpSession maSession = request.getSession(); + boolean isAuthentified = (maSession.getAttribute("isAuthentified") != null) ? (boolean) maSession.getAttribute("isAuthentified") : false; + if (!isAuthentified) { + response.sendRedirect("/Test2Jakarta/Accueil"); + return; + } ClientMysql clientDB = new ClientMysql(); ArrayList clients = clientDB.readAll(); diff --git a/src/main/java/com/test/servlets/NouveauServlet.java b/src/main/java/com/test/servlets/NouveauServlet.java index e056869..6a417d0 100644 --- a/src/main/java/com/test/servlets/NouveauServlet.java +++ b/src/main/java/com/test/servlets/NouveauServlet.java @@ -12,6 +12,8 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import java.util.ArrayList; /** * @@ -61,6 +63,13 @@ public class NouveauServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // processRequest(request, response); + HttpSession maSession = request.getSession(); + boolean isAuthentified = (maSession.getAttribute("isAuthentified") != null) ? (boolean) maSession.getAttribute("isAuthentified") : false; + if (!isAuthentified) { + response.sendRedirect("/Test2Jakarta/Accueil"); + return; + } + request.setAttribute("new_client", false); getServletContext().getRequestDispatcher("/WEB-INF/nouveauClientVue.jsp").forward(request, response); } @@ -80,7 +89,16 @@ public class NouveauServlet extends HttpServlet { NouveauClientForm nouveauClient = new NouveauClientForm(); int idClient = nouveauClient.verifierClient(request); request.setAttribute("new_client", idClient > -1); + if (idClient > -1) { + HttpSession maSession = request.getSession(); + ArrayList lesNouveauxClients = (ArrayList) maSession.getAttribute("lesNvxClients"); + if (lesNouveauxClients == null) { + lesNouveauxClients = new ArrayList<>(); + } + + lesNouveauxClients.add(idClient); + maSession.setAttribute("lesNvxClients", lesNouveauxClients); response.sendRedirect("/Test2Jakarta/ListeClients"); } else { getServletContext().getRequestDispatcher("/WEB-INF/nouveauClientVue.jsp").forward(request, response); diff --git a/src/main/webapp/WEB-INF/accueilVue.jsp b/src/main/webapp/WEB-INF/accueilVue.jsp index 549b71b..4e1694b 100644 --- a/src/main/webapp/WEB-INF/accueilVue.jsp +++ b/src/main/webapp/WEB-INF/accueilVue.jsp @@ -13,21 +13,21 @@ <%@include file="jspf/menu.jspf" %>

Gestion de clients

- <%@ include file="jspf/login.jspf" %> - + <%@ include file="jspf/login.jspf" %> +

Bienvenue ${param.pseudo} !

- +

${authentification.getResultat()}

- +

${authentification.getResultat()}

- ${login} + ${sessionScope.isAuthentified}

diff --git a/src/main/webapp/WEB-INF/nouveauClientVue.jsp b/src/main/webapp/WEB-INF/nouveauClientVue.jsp index 556d250..a088d09 100644 --- a/src/main/webapp/WEB-INF/nouveauClientVue.jsp +++ b/src/main/webapp/WEB-INF/nouveauClientVue.jsp @@ -29,5 +29,9 @@

Le client No. ${id_client} a été créé avec succès !

+
+

Liste des numéros des clients récemment créés :

+ ${unClient} - +