prepare('SELECT MIN(id) as first_id FROM admins'); $result = $stmt->execute(); $firstId = $result->fetchArray()['first_id']; if ($_SESSION['admin_id'] != $firstId) { $_SESSION['error_message'] = "Accès non autorisé. Seul le premier administrateur peut gérer les comptes."; header('Location: admin.php'); exit; } // Se connecter à la base de données function getDB() { return new SQLite3('database.sqlite'); } // Gérer les actions POST if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; $db = getDB(); switch ($action) { case 'add': $username = $_POST['username'] ?? ''; $password = $_POST['password'] ?? ''; if (empty($username) || empty($password)) { $_SESSION['error_message'] = "L'identifiant et le mot de passe sont requis."; break; } // Vérifier si l'utilisateur existe déjà $stmt = $db->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
ID Identifiant Date de création Actions
Admin principal