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;
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");

View File

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

View File

@@ -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<Client> clients = clientDB.readAll();

View File

@@ -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<Integer> lesNouveauxClients = (ArrayList<Integer>) 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);

View File

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

View File

@@ -29,5 +29,9 @@
<p>Le client No. ${id_client} a été créé avec succès !</p>
</c:when>
</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>
</html>