PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ] ); return $pdo; } catch (PDOException $e) { error_log("Connection failed: " . $e->getMessage()); die("Database connection failed. Please try again later."); } } // Create connection for Panel Database (Customer Portal) function getPanelDBConnection() { try { $pdo = new PDO( "mysql:host=" . DB_HOST . ";dbname=" . PANEL_DB_NAME . ";charset=utf8mb4", PANEL_DB_USER, // Use the panel-specific user DB_PASS, // Assuming same password [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ] ); return $pdo; } catch (PDOException $e) { error_log("Panel DB Connection failed: " . $e->getMessage()); die("Panel database connection failed. Please try again later."); } } // Helper function to check if user is logged in function isLoggedIn() { return isset($_SESSION['admin_id']) && isset($_SESSION['admin_role']); } // Helper function to check if user is admin function isAdmin() { return isset($_SESSION['admin_role']) && $_SESSION['admin_role'] === 'admin'; } // Helper function to check if user can access page function canAccessPage($page) { if (!isLoggedIn()) { return false; } // Admin can access everything if (isAdmin()) { return true; } // Manager cannot access users page if ($page === 'users' && $_SESSION['admin_role'] === 'manager') { return false; } return true; } // Helper function to redirect if not authorized function requireLogin() { if (!isLoggedIn()) { header('Location: index.php'); exit; } } // Helper function to require admin role function requireAdmin() { requireLogin(); if (!isAdmin()) { header('Location: index.php'); exit; } } // Helper function to log admin activity function logActivity($admin_id, $action, $description, $resource_type = null, $resource_id = null) { try { $pdo = getDBConnection(); $stmt = $pdo->prepare(" INSERT INTO admin_activity_log (admin_id, action, resource_type, resource_id, description, ip_address) VALUES (?, ?, ?, ?, ?, ?) "); $stmt->execute([ $admin_id, $action, $resource_type, $resource_id, $description, $_SERVER['REMOTE_ADDR'] ?? null ]); } catch (Exception $e) { error_log("Activity log error: " . $e->getMessage()); } } ?>