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 */}
{/* Tableau des utilisateurs */}
{/* Tableau des logs */}
Historique des connexions et journal des logs{" "}
| Nom |
Action |
Timestamp |
{logs.map((log) => (
| {log.name} |
{log.action} |
{log.timestamp} |
))}
);
}
export default User;