load(); require_once __DIR__ . '/../auth/auth_functions.php'; // Only admins can access this page requireAdmin(); $db = getAuthDb(); $success = ''; $error = ''; // Handle create user if (isset($_POST['create_user'])) { $username = trim($_POST['username'] ?? ''); $email = trim($_POST['email'] ?? ''); $password = $_POST['password'] ?? ''; $role = $_POST['role'] ?? 'guest'; if (empty($username) || empty($email) || empty($password)) { $error = 'Vul alle verplichte velden in.'; } elseif (strlen($password) < 8) { $error = 'Wachtwoord moet minimaal 8 tekens lang zijn.'; } elseif (!in_array($role, ['admin', 'guest'])) { $error = 'Ongeldige rol geselecteerd.'; } else { try { $passwordHash = password_hash($password, PASSWORD_BCRYPT); $stmt = $db->prepare(" INSERT INTO users (username, email, password_hash, role, is_active) VALUES (?, ?, ?, ?, 1) "); $stmt->execute([$username, $email, $passwordHash, $role]); $success = "Gebruiker '{$username}' succesvol aangemaakt."; } catch (PDOException $e) { if ($e->getCode() == 23000) { $error = 'Gebruikersnaam of email is al in gebruik.'; } else { $error = 'Er is een fout opgetreden bij het aanmaken van de gebruiker.'; } } } } // Handle update user if (isset($_POST['update_user'])) { $userId = (int)($_POST['user_id'] ?? 0); $username = trim($_POST['username'] ?? ''); $email = trim($_POST['email'] ?? ''); $role = $_POST['role'] ?? 'guest'; $isActive = isset($_POST['is_active']) ? 1 : 0; $newPassword = $_POST['new_password'] ?? ''; if (empty($username) || empty($email)) { $error = 'Vul alle verplichte velden in.'; } elseif (!in_array($role, ['admin', 'guest'])) { $error = 'Ongeldige rol geselecteerd.'; } else { try { if (!empty($newPassword)) { if (strlen($newPassword) < 8) { $error = 'Nieuw wachtwoord moet minimaal 8 tekens lang zijn.'; } else { $passwordHash = password_hash($newPassword, PASSWORD_BCRYPT); $stmt = $db->prepare(" UPDATE users SET username = ?, email = ?, password_hash = ?, role = ?, is_active = ? WHERE id = ? "); $stmt->execute([$username, $email, $passwordHash, $role, $isActive, $userId]); $success = "Gebruiker succesvol bijgewerkt (inclusief wachtwoord)."; } } else { $stmt = $db->prepare(" UPDATE users SET username = ?, email = ?, role = ?, is_active = ? WHERE id = ? "); $stmt->execute([$username, $email, $role, $isActive, $userId]); $success = "Gebruiker succesvol bijgewerkt."; } } catch (PDOException $e) { if ($e->getCode() == 23000) { $error = 'Gebruikersnaam of email is al in gebruik.'; } else { $error = 'Er is een fout opgetreden bij het bijwerken van de gebruiker.'; } } } } // Handle delete user if (isset($_POST['delete_user'])) { $userId = (int)($_POST['user_id'] ?? 0); $currentUserId = getCurrentUser()['id']; if ($userId === $currentUserId) { $error = 'Je kunt je eigen account niet verwijderen.'; } else { try { $stmt = $db->prepare("DELETE FROM users WHERE id = ?"); $stmt->execute([$userId]); $success = "Gebruiker succesvol verwijderd."; } catch (PDOException $e) { $error = 'Er is een fout opgetreden bij het verwijderen van de gebruiker.'; } } } // Get all users $users = $db->query(" SELECT id, username, email, role, is_active, last_login, created_at FROM users ORDER BY created_at DESC ")->fetchAll(); // Get login stats $loginStats = $db->query(" SELECT COUNT(*) as total_attempts, SUM(success) as successful_logins, COUNT(*) - SUM(success) as failed_logins FROM login_attempts WHERE attempted_at > DATE_SUB(NOW(), INTERVAL 24 HOUR) ")->fetch(); $activePage = 'users'; ?>
| ID | Gebruikersnaam | Rol | Status | Laatste Login | Aangemaakt | Acties | |
|---|---|---|---|---|---|---|---|
| = $user['id'] ?> | = htmlspecialchars($user['username']) ?> Jij | = htmlspecialchars($user['email']) ?> | = ucfirst($user['role']) ?> | = $user['is_active'] ? 'Actief' : 'Inactief' ?> | = $user['last_login'] ? date('d-m-Y H:i', strtotime($user['last_login'])) : 'Nooit' ?> | = date('d-m-Y', strtotime($user['created_at'])) ?> |