import React, { useState, useEffect } from "react"; import Sidebar from "./sidebar.jsx"; import { API_BASE_URL } from "../../config.js"; import axios from "axios"; const thTd = "p-2 border border-gray-300 text-left"; const th = `${thTd} bg-gray-100`; function User() { const [users, setUsers] = useState([]); const [logs, setLogs] = useState([]); const [name, setname] = useState(""); const [email, setEmail] = useState(""); const [pointsInput, setPointsInput] = useState({}); const handleAddUser = (e) => { e.preventDefault(); const newUser = { id: Date.now(), name, email, accessLevel: "User", points: 0, }; setUsers([...users, newUser]); logAction(name, "Utilisateur ajouté"); setname(""); setEmail(""); }; useEffect(() => { axios.get(`${API_BASE_URL}/users`).then((response) => { setUsers(response.data); }); }, []); const handleDeleteUser = (userId) => { const user = users.find((u) => u.id === userId); if (user) { axios .post(`${API_BASE_URL}/deleteUser`, { id: userId, }) .then((response) => { alert("L'utilisateur à bien été supprimé !"); console.log("L'utilisateur à été supprimé :", response.data); window.location.reload(); }) .catch((error) => { console.error( "Erreur lors de la suppression de l'utilisateur :", error ); }); logAction(user.name, "Utilisateur supprimé"); } setUsers(users.filter((u) => u.id !== userId)); }; const handleChangeAccessLevel = (userId, newLevel) => { setUsers( users.map((user) => { if (user.id === userId && newLevel!=user.role) { const oldLevel = user.role; user.role = newLevel; /*ToDO*/ if (user.role === "user") { user.points = 0; } else if (user.role === "complexe") { user.points = 60; } else if (user.role === "admin") { user.points = 100; } axios .post(`${API_BASE_URL}/setUserPoints`, { id: user.id, points: user.points, }) .then((response) => { alert("Le changement de niveau a bien été enregistré !"); console.log("Changement de niveau réussit :", response.data); }) .catch((error) => { alert("Il y a eu une erreur dans le changement de niveau !"); console.error("Erreur lors du changement de niveau :", error); }); logAction( user.name, `Niveau d'accés changé de ${oldLevel} à ${newLevel}` ); } return user; }) ); }; const handleAdjustPoints = (userId) => { const pointsToAdd = parseInt(pointsInput[userId]) || 0; setUsers( users.map((user) => { if (user.id === userId) { user.points = pointsToAdd; axios .post(`${API_BASE_URL}/setUserPoints`, { id: user.id, points: user.points, }) .then((response) => { alert("Les points ont bien été enregistré !"); console.log("Ajout des points réussit :", response.data); }) .catch((error) => { alert("Il y a eu une erreur dans l'ajout des points!"); console.error("Erreur lors de l'ajout des points :", error); }); logAction(user.name, `Points ajustés par ${pointsToAdd}`); } return user; }) ); setPointsInput({ ...pointsInput, [userId]: "" }); }; const logAction = (name, action) => { /*TODO*/ /*Ajouter le suivi dans un journal de log*/ const timestamp = new Date().toLocaleString(); setLogs([...logs, { id: Date.now(), name, action, timestamp }]); }; return (

User Management

Manage users from this panel.

{/* Formulaire d'ajout d'utilisateur */}
setname(e.target.value)} required /> setEmail(e.target.value)} required />
{/* Tableau des utilisateurs */} {users.map((user) => ( ))}
Nom Email Niveau d'accès Points Actions
{user.name} {user.email} setPointsInput({ ...pointsInput, [user.id]: e.target.value, }) } />
{/* Tableau des logs */}

Historique des connexions et journal des logs{" "}

{logs.map((log) => ( ))}
Nom Action Timestamp
{log.name} {log.action} {log.timestamp}
); } export default User;