Gestion d'authentification

This commit is contained in:
2025-09-29 17:52:54 +02:00
parent 1adcd90c37
commit 4634cfd4c2
8 changed files with 204 additions and 16 deletions

View File

@@ -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<Salarie> readAll() {
ArrayList<Salarie> salaries = new ArrayList<Salarie>();
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;
}
}

View File

@@ -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;
}
}

View File

@@ -4,6 +4,8 @@
*/ */
package com.test.forms; package com.test.forms;
import com.test.bdd.SalarieMysql;
import com.test.beans.Salarie;
import com.test.beans.User; import com.test.beans.User;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@@ -24,10 +26,27 @@ public class AuthentifForm {
this.resultat = resultat; 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) { public boolean controlerAdmin(HttpServletRequest request) {
User admin = new User("Lovelace", "Ada"); SalarieMysql salarieDB = new SalarieMysql();
User userSaisi = new User(request.getParameter("pseudo"), request.getParameter("mdp")); String pseudo = (String) request.getParameter("pseudo");
boolean estAdmin = admin.equals(userSaisi); String mdp = (String) request.getParameter("mdp");
Salarie user = salarieDB.lireSalarie(pseudo, mdp);
boolean estAdmin = user.isAdmin();
if (estAdmin) { if (estAdmin) {
this.setResultat("Vous êtes administrateur"); this.setResultat("Vous êtes administrateur");

View File

@@ -13,6 +13,7 @@ import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
/** /**
* *
@@ -78,21 +79,21 @@ public class AuthentifServlet extends HttpServlet {
@Override @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
HttpSession maSession = request.getSession();
String pseudo = (String) request.getParameter("pseudo"); String pseudo = (String) request.getParameter("pseudo");
String mdp = (String) request.getParameter("mdp"); String mdp = (String) request.getParameter("mdp");
if (!pseudo.isBlank() && !mdp.isBlank()) {
if (pseudo.equals(this.monPseudo) && mdp.equals(this.monMdp)) {
request.setAttribute("login", true);
}
}
AuthentifForm authentification = new AuthentifForm(); AuthentifForm authentification = new AuthentifForm();
maSession.setAttribute("isAuthentified", false);
if (!pseudo.isBlank() && !mdp.isBlank()) {
if (authentification.existeUser(request)) {
boolean isAdmin = authentification.controlerAdmin(request); boolean isAdmin = authentification.controlerAdmin(request);
request.setAttribute("admin", isAdmin);
maSession.setAttribute("isAuthentified", true);
}
}
request.setAttribute("authentification", authentification); request.setAttribute("authentification", authentification);
request.setAttribute("admin", isAdmin);
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/accueilVue.jsp"); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/accueilVue.jsp");
dispatcher.forward(request, response); dispatcher.forward(request, response);
} }

View File

@@ -13,6 +13,7 @@ import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
@@ -62,6 +63,12 @@ public class ListeServlet extends HttpServlet {
@Override @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { 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(); ClientMysql clientDB = new ClientMysql();
ArrayList<Client> clients = clientDB.readAll(); ArrayList<Client> clients = clientDB.readAll();

View File

@@ -12,6 +12,8 @@ import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; 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) protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
// processRequest(request, response); // 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); request.setAttribute("new_client", false);
getServletContext().getRequestDispatcher("/WEB-INF/nouveauClientVue.jsp").forward(request, response); getServletContext().getRequestDispatcher("/WEB-INF/nouveauClientVue.jsp").forward(request, response);
} }
@@ -80,7 +89,16 @@ public class NouveauServlet extends HttpServlet {
NouveauClientForm nouveauClient = new NouveauClientForm(); NouveauClientForm nouveauClient = new NouveauClientForm();
int idClient = nouveauClient.verifierClient(request); int idClient = nouveauClient.verifierClient(request);
request.setAttribute("new_client", idClient > -1); request.setAttribute("new_client", idClient > -1);
if (idClient > -1) { if (idClient > -1) {
HttpSession maSession = request.getSession();
ArrayList<Integer> lesNouveauxClients = (ArrayList<Integer>) maSession.getAttribute("lesNvxClients");
if (lesNouveauxClients == null) {
lesNouveauxClients = new ArrayList<>();
}
lesNouveauxClients.add(idClient);
maSession.setAttribute("lesNvxClients", lesNouveauxClients);
response.sendRedirect("/Test2Jakarta/ListeClients"); response.sendRedirect("/Test2Jakarta/ListeClients");
} else { } else {
getServletContext().getRequestDispatcher("/WEB-INF/nouveauClientVue.jsp").forward(request, response); getServletContext().getRequestDispatcher("/WEB-INF/nouveauClientVue.jsp").forward(request, response);

View File

@@ -13,21 +13,21 @@
<%@include file="jspf/menu.jspf" %> <%@include file="jspf/menu.jspf" %>
<h1>Gestion de clients</h1> <h1>Gestion de clients</h1>
<c:choose> <c:choose>
<c:when test="${!login}"><%@ include file="jspf/login.jspf" %></c:when> <c:when test="${!sessionScope.isAuthentified}"><%@ include file="jspf/login.jspf" %></c:when>
<c:when test="${login}"> <c:when test="${sessionScope.isAuthentified}">
<p>Bienvenue ${param.pseudo} !</p> <p>Bienvenue ${param.pseudo} !</p>
<c:choose> <c:choose>
<c:when test="${!login}"> <c:when test="${!sessionScope.isAuthentified}">
<p>${authentification.getResultat()}</p> <p>${authentification.getResultat()}</p>
</c:when> </c:when>
<c:when test="${login}"> <c:when test="${sessionScope.isAuthentified}">
<p>${authentification.getResultat()}</p> <p>${authentification.getResultat()}</p>
</c:when> </c:when>
</c:choose> </c:choose>
</c:when> </c:when>
</c:choose> </c:choose>
<p> <p>
${login} ${sessionScope.isAuthentified}
</p> </p>
</body> </body>
</html> </html>

View File

@@ -29,5 +29,9 @@
<p>Le client No. ${id_client} a été créé avec succès !</p> <p>Le client No. ${id_client} a été créé avec succès !</p>
</c:when> </c:when>
</c:choose> </c:choose>
<article>
<h3>Liste des numéros des clients récemment créés :</h3>
<c:forEach items="${sessionScope.lesNvxClients}" var="unClient"> ${unClient} -</c:forEach>
</article>
</body> </body>
</html> </html>