diff --git a/Back-end/src/main/java/com/example/starter/AuthHandler.java b/Back-end/src/main/java/com/example/starter/AuthHandler.java index 12205b3..68de2e4 100644 --- a/Back-end/src/main/java/com/example/starter/AuthHandler.java +++ b/Back-end/src/main/java/com/example/starter/AuthHandler.java @@ -78,7 +78,7 @@ public class AuthHandler { } databaseService.pool - .preparedQuery("SELECT name, surname, password, points FROM users WHERE email = ?") // Ajout de name et surname + .preparedQuery("SELECT id,name, surname, password, points FROM users WHERE email = ?") // Ajout de name et surname .execute(Tuple.of(email)) .onSuccess(result -> { if (result.rowCount() == 0) { @@ -89,6 +89,7 @@ public class AuthHandler { } var row = result.iterator().next(); + Integer id = row.getInteger("id"); String storedHashedPassword = row.getString("password"); Integer nbPointsUser = row.getInteger("points"); String name = row.getString("name"); @@ -100,7 +101,8 @@ public class AuthHandler { JsonObject claims = new JsonObject() .put("sub", email) .put("name", name) - .put("surname", surname); + .put("surname", surname) + .put("id", id); if (nbPointsUser <= 60) { claims.put("role", "user"); diff --git a/Back-end/src/main/java/com/example/starter/QueryObjects.java b/Back-end/src/main/java/com/example/starter/QueryObjects.java index 029a497..f984225 100644 --- a/Back-end/src/main/java/com/example/starter/QueryObjects.java +++ b/Back-end/src/main/java/com/example/starter/QueryObjects.java @@ -91,7 +91,7 @@ public class QueryObjects { .put("status", row.getString("status")) .put("batterie", row.getInteger("batterie")) .put("type_batterie", row.getString("type_batterie")) - .put("proprio", row.getString("proprio")); + .put("proprio_id", row.getInteger("proprio_id")); objects.add(object); } return objects; diff --git a/Back-end/src/main/java/com/example/starter/QueryUsers.java b/Back-end/src/main/java/com/example/starter/QueryUsers.java index 4ea1c5f..f9f744a 100644 --- a/Back-end/src/main/java/com/example/starter/QueryUsers.java +++ b/Back-end/src/main/java/com/example/starter/QueryUsers.java @@ -59,8 +59,7 @@ public class QueryUsers { .end(new JsonObject().put("error", "Corps de la requête manquant").encode()); return; } - //Integer idUser = body.getInteger("idUser"); - Integer idUser = 4; + Integer idUser = body.getInteger("id"); databaseService.pool .preparedQuery("SELECT * FROM users WHERE id=?;") .execute(Tuple.of(idUser)) diff --git a/Back-end/src/main/java/com/example/starter/SetObjects.java b/Back-end/src/main/java/com/example/starter/SetObjects.java index a1bb0e6..30045e4 100644 --- a/Back-end/src/main/java/com/example/starter/SetObjects.java +++ b/Back-end/src/main/java/com/example/starter/SetObjects.java @@ -103,10 +103,10 @@ public class SetObjects { String location = body.getString("location"); String status = body.getString("status"); String batterieType = body.getString("batterieType"); - String proprio = body.getString("proprio"); + Integer proprio_id = body.getInteger("proprio_id"); databaseService.pool - .preparedQuery("INSERT INTO weather_objects (name,description,type,location,status,type_batterie,proprio) VALUES (?,?,?,?,?,?,?)") - .execute(Tuple.of(name,description,type,location,status,batterieType,proprio)) + .preparedQuery("INSERT INTO weather_objects (name,description,type,location,status,type_batterie,proprio_id) VALUES (?,?,?,?,?,?,?)") + .execute(Tuple.of(name,description,type,location,status,batterieType,proprio_id)) .onFailure(e->{ System.err.println("Erreur de récupération de la BDD :"+e.getMessage()); context.response() diff --git a/Front-end/package-lock.json b/Front-end/package-lock.json index 8494b4e..d7b9ad1 100644 --- a/Front-end/package-lock.json +++ b/Front-end/package-lock.json @@ -4389,6 +4389,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", "engines": { "node": ">=18" } diff --git a/Front-end/src/App.jsx b/Front-end/src/App.jsx index 6aab120..fde0836 100644 --- a/Front-end/src/App.jsx +++ b/Front-end/src/App.jsx @@ -36,7 +36,7 @@ function App() { {/* Routes protégées pour les admins et complexes */} } allowedRoles={['admin', 'complexe']} />} /> - } allowedRoles={['admin', 'complexe']} />} /> + } allowedRoles={['admin', 'complexe','user']} />} /> {/* Routes protégées pour tous les utilisateurs connectés */} } allowedRoles={['admin', 'complexe', 'user']} />} /> diff --git a/Front-end/src/components/FormNewObject.jsx b/Front-end/src/components/FormNewObject.jsx index 662f5e4..c9913b8 100644 --- a/Front-end/src/components/FormNewObject.jsx +++ b/Front-end/src/components/FormNewObject.jsx @@ -2,15 +2,16 @@ import React, { useState } from "react"; import { BadgePlus } from "lucide-react"; import axios from "axios"; import { API_BASE_URL } from "../config"; +import { useAuth } from "../AuthContext"; function FormNewObject({ isAdmin }) { + const { user } = useAuth(); + const [description, setDescription] = useState(""); const [type, setType] = useState(""); const [location, setLocalisation] = useState(""); - const [proprio,setProprio] = useState(""); + const [proprio_id,setProprio_id] = useState(user?.id); const [batterieType,setBatterieType] = useState(""); - /*TODO*/ - /*Definir proprio avec le nom de l'user qui ajoute*/ const [status, setStatus] = useState("active"); const [nom, setNom] = useState(""); const [Response, setResponse] = useState(null); @@ -31,7 +32,7 @@ function FormNewObject({ isAdmin }) { location, status, batterieType, - proprio + proprio_id }) .then((response) => { setMessRequete("Votre objet à bien été enregistré !"); @@ -55,7 +56,7 @@ function FormNewObject({ isAdmin }) { setType(""); setLocalisation(""); setBatterieType(""); - if(isAdmin)setProprio(""); + if(isAdmin)set_id(""); setActive(true); } function handleCancel() { @@ -182,17 +183,17 @@ function FormNewObject({ isAdmin }) {
setProprio(e.target.value)} + type="number" + value={proprio_id} + onChange={(e) => setProprio_id(e.target.value)} required disabled={verif||!isAdmin} /> diff --git a/Front-end/src/pages/Admin/AdminObjet.jsx b/Front-end/src/pages/Admin/AdminObjet.jsx index 8ad524b..336f876 100644 --- a/Front-end/src/pages/Admin/AdminObjet.jsx +++ b/Front-end/src/pages/Admin/AdminObjet.jsx @@ -205,7 +205,7 @@ function AdminObjet() { {obj.location} - {obj.proprio} + {obj.proprio_id} {obj.status} diff --git a/Front-end/src/pages/Home.jsx b/Front-end/src/pages/Home.jsx index a97f1d3..83dfd9d 100644 --- a/Front-end/src/pages/Home.jsx +++ b/Front-end/src/pages/Home.jsx @@ -21,6 +21,8 @@ function Home() {

Bienvenue, {user.name} {user.surname}!

Email : {user.sub}

Rôle : {user.role}

+

Rôle : {user.id}

+ ):(

Non connecté

diff --git a/Front-end/src/pages/Profil.jsx b/Front-end/src/pages/Profil.jsx index fb60988..aa22826 100644 --- a/Front-end/src/pages/Profil.jsx +++ b/Front-end/src/pages/Profil.jsx @@ -2,11 +2,17 @@ import React, { useState, useEffect } from 'react'; import { Mail, User, Lock, Edit, Save } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { API_BASE_URL } from "../config"; +import { useAuth } from "../AuthContext"; import axios from "axios"; function Profil() { const [userData, setUserData] = useState({}); - const identifiant=4; + const { user } = useAuth(); + useEffect(() => { + if (user) { + console.log("user.role:", user.id); + } + }, [user]); const [formData, setFormData] = useState({ oldPassword: '', newPassword: '', @@ -21,7 +27,7 @@ function Profil() { useEffect(() => { axios .post(`${API_BASE_URL}/user`, { - id: identifiant, + id: user.id, }) .then((response) => { setUserData(response.data); @@ -30,7 +36,7 @@ function Profil() { .catch((error) => { console.error("Erreur lors de la récupération :", error); }); - }, []); + }, [user]); const handleChange = (e) => { const { name, value } = e.target; @@ -61,7 +67,7 @@ function Profil() { try { axios .post(`${API_BASE_URL}/changePassword`, { - id: userData.id, // Il faudrait s'assurer que userData contient l'ID de l'utilisateur + id: userData.id, oldPassword: formData.oldPassword, newPassword: formData.newPassword })