From 10806e5aece3e28d93f3794518b29370d0a29066 Mon Sep 17 00:00:00 2001 From: Esenjin Date: Mon, 30 Dec 2024 22:58:49 +0100 Subject: [PATCH] ajout de la section utilisateurs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit possibiliter d'ajouter/éditer/supprimer des comptes administrateurs --- admin.php | 15 ++- styles-admin.css | 32 +++++ utilisateurs.php | 304 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 350 insertions(+), 1 deletion(-) create mode 100644 utilisateurs.php diff --git a/admin.php b/admin.php index d68cefe..53c541a 100644 --- a/admin.php +++ b/admin.php @@ -69,7 +69,7 @@ function showAdminInterface() {

Administration ICO

Accéder à la galerie - Changer le mot de passe + Changer mon mdp Déconnexion
@@ -98,6 +98,19 @@ function showAdminInterface() {

Organisez vos albums et gérez l'arborescence de votre galerie photo.

+ + + + + diff --git a/styles-admin.css b/styles-admin.css index 4d2a151..12e294a 100644 --- a/styles-admin.css +++ b/styles-admin.css @@ -188,6 +188,38 @@ body { bottom: 0; } +/* Styles pour la table des utilisateurs */ +.admin-table { + width: 100%; + border-collapse: collapse; + margin-top: 1rem; + background: #1e1e1e; + border-radius: 0.5rem; + overflow: hidden; +} + +.admin-table th, +.admin-table td { + padding: 1rem; + text-align: left; + border-bottom: 1px solid #2a2a2a; +} + +.admin-table th { + background-color: #2a2a2a; + font-weight: 500; + color: #ffffff; +} + +.admin-table tr:hover { + background-color: #2a2a2a; +} + +.table-actions { + display: flex; + gap: 0.5rem; +} + /* Formulaires */ .form-group { margin-bottom: 1.5rem; diff --git a/utilisateurs.php b/utilisateurs.php new file mode 100644 index 0000000..9adaac8 --- /dev/null +++ b/utilisateurs.php @@ -0,0 +1,304 @@ +prepare('SELECT COUNT(*) as count FROM admins WHERE username = :username'); + $stmt->bindValue(':username', $username, SQLITE3_TEXT); + $result = $stmt->execute()->fetchArray(); + + if ($result['count'] > 0) { + $_SESSION['error_message'] = "Cet identifiant existe déjà."; + break; + } + + // Créer le nouvel utilisateur + $stmt = $db->prepare('INSERT INTO admins (username, password_hash) VALUES (:username, :password_hash)'); + $stmt->bindValue(':username', $username, SQLITE3_TEXT); + $stmt->bindValue(':password_hash', password_hash($password, PASSWORD_DEFAULT), SQLITE3_TEXT); + + if ($stmt->execute()) { + $_SESSION['success_message'] = "Utilisateur ajouté avec succès."; + } else { + $_SESSION['error_message'] = "Erreur lors de l'ajout de l'utilisateur."; + } + break; + + case 'edit': + $userId = $_POST['user_id'] ?? ''; + $username = $_POST['username'] ?? ''; + $password = $_POST['password'] ?? ''; + + if (empty($userId) || empty($username)) { + $_SESSION['error_message'] = "Des informations sont manquantes."; + break; + } + + // Vérifier que l'utilisateur existe et n'est pas le premier compte + $stmt = $db->prepare('SELECT id FROM admins WHERE id = :id'); + $stmt->bindValue(':id', $userId, SQLITE3_INTEGER); + $user = $stmt->execute()->fetchArray(); + + if (!$user) { + $_SESSION['error_message'] = "Utilisateur introuvable."; + break; + } + + // Vérifier si le nouveau nom d'utilisateur existe déjà pour un autre utilisateur + $stmt = $db->prepare('SELECT id FROM admins WHERE username = :username AND id != :id'); + $stmt->bindValue(':username', $username, SQLITE3_TEXT); + $stmt->bindValue(':id', $userId, SQLITE3_INTEGER); + $exists = $stmt->execute()->fetchArray(); + + if ($exists) { + $_SESSION['error_message'] = "Cet identifiant est déjà utilisé."; + break; + } + + // Mettre à jour l'utilisateur + if (!empty($password)) { + $stmt = $db->prepare('UPDATE admins SET username = :username, password_hash = :password_hash WHERE id = :id'); + $stmt->bindValue(':password_hash', password_hash($password, PASSWORD_DEFAULT), SQLITE3_TEXT); + } else { + $stmt = $db->prepare('UPDATE admins SET username = :username WHERE id = :id'); + } + + $stmt->bindValue(':username', $username, SQLITE3_TEXT); + $stmt->bindValue(':id', $userId, SQLITE3_INTEGER); + + if ($stmt->execute()) { + $_SESSION['success_message'] = "Utilisateur modifié avec succès."; + } else { + $_SESSION['error_message'] = "Erreur lors de la modification de l'utilisateur."; + } + break; + + case 'delete': + $userId = $_POST['user_id'] ?? ''; + + if (empty($userId)) { + $_SESSION['error_message'] = "ID utilisateur manquant."; + break; + } + + // Vérifier que l'utilisateur n'est pas le premier compte + $stmt = $db->prepare('SELECT MIN(id) as first_id FROM admins'); + $firstId = $stmt->execute()->fetchArray()['first_id']; + + if ($userId == $firstId) { + $_SESSION['error_message'] = "Impossible de supprimer le compte principal."; + break; + } + + // Supprimer l'utilisateur + $stmt = $db->prepare('DELETE FROM admins WHERE id = :id AND id != (SELECT MIN(id) FROM admins)'); + $stmt->bindValue(':id', $userId, SQLITE3_INTEGER); + + if ($stmt->execute()) { + $_SESSION['success_message'] = "Utilisateur supprimé avec succès."; + } else { + $_SESSION['error_message'] = "Erreur lors de la suppression de l'utilisateur."; + } + break; + } + + header('Location: utilisateurs.php'); + exit; +} + +// Récupérer la liste des utilisateurs +$db = getDB(); +$users = []; +$result = $db->query('SELECT * FROM admins ORDER BY id'); +while ($row = $result->fetchArray(SQLITE3_ASSOC)) { + $users[] = $row; +} +?> + + + + + + + Gestion des utilisateurs - ICO + + + + + +
+

Gestion des utilisateurs

+
+ + Retour +
+
+ +
+ +
+ + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
IDIdentifiantDate de créationActions
+ + + + +
+
+
+ + + + + + + + + + + + +