From b10408f4430d18e3bd1ea2359e3cb2a834d5967b Mon Sep 17 00:00:00 2001 From: Mathis Date: Thu, 10 Apr 2025 22:08:41 +0200 Subject: [PATCH 1/7] Ajout du backend sur les users --- .../com/example/starter/MainVerticle.java | 2 + .../java/com/example/starter/SetUser.java | 37 ++- Front-end/src/pages/Admin/Dashboard.jsx | 130 ++++------- Front-end/src/pages/Admin/User.jsx | 219 +++++++++--------- 4 files changed, 188 insertions(+), 200 deletions(-) diff --git a/Back-end/src/main/java/com/example/starter/MainVerticle.java b/Back-end/src/main/java/com/example/starter/MainVerticle.java index 052e187..8492e6e 100644 --- a/Back-end/src/main/java/com/example/starter/MainVerticle.java +++ b/Back-end/src/main/java/com/example/starter/MainVerticle.java @@ -54,6 +54,8 @@ public class MainVerticle extends AbstractVerticle { router.post("/deleteObject").handler(setObjects::deleteObject); router.get("/users").handler(queryUsers::getUsers); router.post("/setUserPoints").handler(setUser::setUserPoints); + router.post("/deleteUser").handler(setUser::deleteUser); + // Routes d'authentification router.post("/signup").handler(authHandler::handleSignup); router.post("/login").handler(authHandler::handleLogin); diff --git a/Back-end/src/main/java/com/example/starter/SetUser.java b/Back-end/src/main/java/com/example/starter/SetUser.java index 9d104fd..b2ade2a 100644 --- a/Back-end/src/main/java/com/example/starter/SetUser.java +++ b/Back-end/src/main/java/com/example/starter/SetUser.java @@ -25,7 +25,7 @@ public class SetUser { databaseService.pool .preparedQuery( "UPDATE users SET points=? WHERE id=?") - .execute(Tuple.of(points,id)) + .execute(Tuple.of(points, id)) .onFailure(e -> { System.err.println("Erreur de récupération de la BDD :" + e.getMessage()); context.response() @@ -41,8 +41,41 @@ public class SetUser { } context.response() .putHeader("content-type", "application/json: charset=UTF-8") - .end(new JsonObject().put("success", "Les points de l'utilisateur ont bien été mis à jour").encode()); + .end(new JsonObject().put("success", "Les points de l'utilisateur ont bien été mis à jour") + .encode()); return; }); } + public void deleteUser(RoutingContext context){ + JsonObject body = context.body().asJsonObject(); + if(body== null){ + context.response() + .setStatusCode(400) + .end(new JsonObject().put("error","Corps de la requête manquant").encode()); + return; + } + Integer id = body.getInteger("id"); + databaseService.pool + .preparedQuery("DELETE FROM users WHERE id=?") + .execute(Tuple.of(id)) + .onFailure(e->{ + System.err.println("Erreur de récupération de la BDD :"+e.getMessage()); + context.response() + .setStatusCode(500) + .end(new JsonObject().put("error","Erreur de récupération de la BDD").encode()); + }) + .onSuccess(rows -> { + if(rows.rowCount()==0){ + context.response() + .setStatusCode(404) + .end(new JsonObject().put("error", "Utilisateur non trouvé").encode()); + return; + } + context.response() + .putHeader("content-type","application/json: charset=UTF-8") + .end(new JsonObject().put("success", "L'utilisateur à bien été supprimé").encode()); + return; + }); + + } } diff --git a/Front-end/src/pages/Admin/Dashboard.jsx b/Front-end/src/pages/Admin/Dashboard.jsx index 8056bc8..3e29bcf 100644 --- a/Front-end/src/pages/Admin/Dashboard.jsx +++ b/Front-end/src/pages/Admin/Dashboard.jsx @@ -1,51 +1,8 @@ -import React, { useState,useEffect } from "react"; +import React, { useState, useEffect } from "react"; import Sidebar from "./sidebar.jsx"; import { API_BASE_URL } from "../../config.js"; import axios from "axios"; - -const dashboardStyles = { - mainContent: { - flexGrow: 1, - padding: "20px", - }, - summaryContainer: { - display: "flex", - gap: "20px", - marginBottom: "20px", - }, - summaryCard: { - background: "#f4f4f4", - padding: "20px", - flex: 1, - borderRadius: "5px", - textAlign: "center", - }, - table: { - width: "100%", - borderCollapse: "collapse", - }, - tableHeader: { - padding: "10px", - border: "1px solid #ccc", - backgroundColor: "#f4f4f4", - }, - tableCell: { - padding: "10px", - border: "1px solid #ccc", - textAlign: "left", - }, - viewMoreButton: { - marginTop: "10px", - padding: "10px 15px", - backgroundColor: "#007bff", - color: "#fff", - border: "none", - borderRadius: "5px", - cursor: "pointer", - }, -}; - function Dashboard() { const [users, setUsers] = useState([]); const [logs, setLogs] = useState([ @@ -62,64 +19,67 @@ function Dashboard() { timestamp: new Date().toLocaleString(), }, ]); + useEffect(() => { axios.get(`${API_BASE_URL}/users`).then((response) => { setUsers(response.data); }); }, []); + return ( -
+
-
-

Dashboard

-
-
-

Total Users

-

{users.length}

+
+

Dashboard

+ +
+
+

Total Users

+

{users.length}

-
-

Dernier Log

+
+

Dernier Log

{logs.length > 0 ? ( -

- {logs[logs.length - 1].username} -{" "} - {logs[logs.length - 1].action} +

+ {logs[logs.length - 1].username} - {logs[logs.length - 1].action}

) : ( -

Aucun log

+

Aucun log

)}
-

Aperçu des Utilisateurs

- - - - - - - - - - {users.slice(0, 5).map((user) => ( - - - - +

Aperçu des Utilisateurs

+
+
UsernameEmailNiveau d'accès
{user.name}{user.email}{user.role}
+ + + + + - ))} - {users.length === 0 && ( - - - - )} - -
UsernameEmailNiveau d'accès
- Aucun utilisateur disponible -
- {/* Bouton pour accéder à la page complète */} + + + {users.slice(0, 5).map((user) => ( + + {user.name} + {user.email} + {user.role} + + ))} + {users.length === 0 && ( + + + Aucun utilisateur disponible + + + )} + + +
{/* Tableau des utilisateurs */} - +
- - - - - + + + + + {users.map((user) => ( - - - + + - - @@ -240,22 +231,24 @@ function User() {
NomEmailNiveau d'accèsPointsActionsNomEmailNiveau d'accèsPointsActions
{user.name}{user.email} + {user.name}{user.email} {/* Menu déroulant pour changer le niveau d'accès */} - {user.points} + {/* Input et bouton pour ajuster les points */} setPointsInput({ ...pointsInput, @@ -211,27 +210,19 @@ function User() { } /> + {/* Bouton de suppression */}
{/* Tableau des logs */} -
-

Historique des connexions et journal des logs

- +
+

+ Historique des connexions et journal des logs{" "} +

+
- - - + + + {logs.map((log) => ( - - - + + + ))} From 6f054bc70745adf6fa2f588e8c81f0038d59a7ab Mon Sep 17 00:00:00 2001 From: Mathis Date: Thu, 10 Apr 2025 23:02:33 +0200 Subject: [PATCH 2/7] Responsivite admin page --- Front-end/src/pages/Admin/AdminObjet.jsx | 12 ++++++------ Front-end/src/pages/Admin/User.jsx | 3 --- Front-end/src/pages/Gestion/ObjectManagement.jsx | 2 +- Front-end/src/pages/Login.jsx | 3 ++- Front-end/src/pages/Settings.jsx | 2 +- Front-end/src/pages/Signup.jsx | 7 ++++--- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/Front-end/src/pages/Admin/AdminObjet.jsx b/Front-end/src/pages/Admin/AdminObjet.jsx index 05f1abd..8ad524b 100644 --- a/Front-end/src/pages/Admin/AdminObjet.jsx +++ b/Front-end/src/pages/Admin/AdminObjet.jsx @@ -146,16 +146,15 @@ function AdminObjet() { {/*Formulaire d'ajout d'objet*/} - {/* Tri des objets */}
-
+

Liste des Objets et Outils/Services

-
+ +
NomActionTimestampNomActionTimestamp
{log.name}{log.action}{log.timestamp}{log.name}{log.action}{log.timestamp}
- -
Nom + Description @@ -195,7 +195,7 @@ function AdminObjet() { {obj.name} + {obj.description} diff --git a/Front-end/src/pages/Admin/User.jsx b/Front-end/src/pages/Admin/User.jsx index 404c62b..9244805 100644 --- a/Front-end/src/pages/Admin/User.jsx +++ b/Front-end/src/pages/Admin/User.jsx @@ -182,7 +182,6 @@ function User() { {user.name} {user.email} - {/* Menu déroulant pour changer le niveau d'accès */} - {/* Input et bouton pour ajuster les points */} - {/* Bouton de suppression */} @@ -13,7 +13,7 @@ function AlertInactive({affAlert,setAffAlert}) {

Cet objet peut être inactif dû à son manque de données. Vous pouvez le - rendre inactif en appuyant ici. + rendre inactif en changeant son status.

))); diff --git a/Front-end/src/components/Header.jsx b/Front-end/src/components/Header.jsx index 767ca68..18fef1f 100644 --- a/Front-end/src/components/Header.jsx +++ b/Front-end/src/components/Header.jsx @@ -90,7 +90,9 @@ function Header() {
  • diff --git a/Front-end/src/pages/Admin/User.jsx b/Front-end/src/pages/Admin/User.jsx index 9244805..7ea7585 100644 --- a/Front-end/src/pages/Admin/User.jsx +++ b/Front-end/src/pages/Admin/User.jsx @@ -63,11 +63,11 @@ function User() { user.role = newLevel; /*ToDO*/ if (user.role === "user") { - user.points = 0; - } else if (user.role === "complexe") { user.points = 60; - } else if (user.role === "admin") { + } else if (user.role === "complexe") { user.points = 100; + } else if (user.role === "admin") { + user.points = 200; } axios .post(`${API_BASE_URL}/setUserPoints`, {