fix: back to password in session, add list users in admin panel, modify, delete, logout

This commit is contained in:
Morph01
2025-02-04 07:13:34 -08:00
parent 9bac52bc37
commit 986b72a2cb
9 changed files with 224 additions and 30 deletions

48
views/delete_user.php Normal file
View File

@@ -0,0 +1,48 @@
<?php
session_start();
// Vérifier si l'utilisateur est admin
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
header("Location: ../index.php");
exit;
}
require_once __DIR__ . '/../controllers/controllerAdmin.php';
if (!isset($_POST['user_dn'])) {
echo "Utilisateur non spécifié.";
exit;
}
$user_dn = $_POST['user_dn'];
deleteUser($user_dn); // Fonction à implémenter pour supprimer l'utilisateur
echo "Utilisateur supprimé avec succès.";
header("Location: list_users.php");
exit;
function deleteUser($user_dn)
{
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$ldapconn = ldap_connect("ldap://intranet.epul3a.local")
or die("Could not connect to LDAP server.");
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
$ldap_user = "CN=" . $_SESSION['user_pseudo'] . ",CN=Users,DC=epul3a,DC=local";
if (!@ldap_bind($ldapconn, $ldap_user, $_SESSION['password'])) {
die("Could not bind to LDAP server: " . ldap_error($ldapconn));
}
if (!@ldap_delete($ldapconn, $user_dn)) {
die("Erreur lors de la suppression de l'utilisateur: " . ldap_error($ldapconn));
}
ldap_close($ldapconn);
}

40
views/edit_user.php Normal file
View File

@@ -0,0 +1,40 @@
<?php
session_start();
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
header("Location: ../index.php");
exit;
}
require_once __DIR__ . '/../controllers/controllerAdmin.php';
if (!isset($_POST['user_dn'])) {
echo "Utilisateur non spécifié.";
exit;
}
$user_dn = $_POST['user_dn'];
$user = getUserDetails($user_dn); // Fonction à créer pour récupérer les détails d'un utilisateur
$ous = getListOU(); // Fonction à créer pour récupérer la liste des OU
if (!$user) {
echo "Utilisateur introuvable.";
exit;
}
?>
<h2>Modifier un utilisateur</h2>
<form method="post" action="../controllers/update_user.php">
<input type="hidden" name="user_dn" value="<?= htmlspecialchars($user_dn) ?>">
<label>Nom:</label>
<input type="text" name="cn" value="<?= htmlspecialchars($user['cn'][0]) ?>" required><br>
<label>Email:</label>
<input type="email" name="mail" value="<?= htmlspecialchars($user['mail'][0] ?? '') ?>"><br>
<label>OU:</label>
<button type="submit">Enregistrer</button>
</form>

46
views/list_users.php Normal file
View File

@@ -0,0 +1,46 @@
<?php
session_start();
// Check if user is logged in and is admin
if (!isset($_SESSION["login"]) || !$_SESSION["is_admin"]) {
header("Location: ../index.php");
exit;
}
require_once __DIR__ . '/../controllers/controllerAdmin.php';
echo "<h2>Gestion des utilisateurs</h2>";
// Display users table
echo "<table border='1'>
<tr>
<th>Nom</th>
<th>Email</th>
<th>OU</th>
<th>Actions</th>
</tr>";
$users = listAllUsers();
foreach ($users as $user) {
$name = htmlspecialchars($user['cn'][0]);
$email = htmlspecialchars($user['mail'][0] ?? 'N/A');
$ou = htmlspecialchars($user['ou']);
$dn = htmlspecialchars($user['distinguishedname'][0]);
echo "<tr>
<td>$name</td>
<td>$email</td>
<td>$ou</td>
<td>
<form method='post' action='edit_user.php' style='display:inline;'>
<input type='hidden' name='user_dn' value='$dn'>
<input type='submit' value='Modifier'>
</form>
<form method='post' action='delete_user.php' style='display:inline;' onsubmit='return confirm(\"Confirmer la suppression ?\");'>
<input type='hidden' name='user_dn' value='$dn'>
<input type='submit' value='Supprimer'>
</form>
</td>
</tr>";
}
echo "</table>";

View File

@@ -4,14 +4,24 @@ if (!isset($_SESSION["login"]) || $_SESSION["login"] !== true) {
exit;
}
echo "Bienvenue " . $_SESSION["user_pseudo"];
require_once __DIR__ . '/../controllers/controllerAdmin.php';
// Récupérer les infos de l'utilisateur
// $user_info = getUserByPseudo($_SESSION["user_pseudo"]);
echo "Bienvenue " . $_SESSION["user_pseudo"] . "!";
// Affichage du menu
echo "<h2>Menu</h2>";
echo "<ul>";
if ($_SESSION["is_admin"]) {
echo "<h2>Admin Dashboard</h2>";
echo "<a href='controllers/create_user.php'>Créer un utilisateur</a><br>";
echo "<a href='controllers/modify_user.php'>Modifier un utilisateur</a><br>";
echo "<a href='controllers/delete_user.php'>Supprimer un utilisateur</a><br>";
} else {
echo "<h2>Utilisateur Standard</h2>";
echo "<p>Vous pouvez consulter votre profil.</p>";
echo "<li><a href='views/list_users.php'>Liste des utilisateurs</a></li>";
echo "<li><a href='views/add_user.php'>Ajouter un utilisateur</a></li>";
}
echo "</ul>";
// Bouton de déconnexion
echo "<form method='post' action='../controllers/logout.php'>";
echo "<input type='submit' value='Déconnexion'>";
echo "</form>";
// Reste du code (admin/user)