false, 'message' => 'Unauthorized: Silakan login terlebih dahulu untuk mengakses fitur ini.' ]); exit; } $user = $_SESSION['user']; // Cek kecocokan role (RBAC) jika list allowedRoles tidak kosong if (!empty($allowedRoles) && !in_array($user['role'], $allowedRoles)) { http_response_code(403); echo json_encode([ 'success' => false, 'message' => 'Forbidden: Peran Anda (' . $user['role'] . ') tidak memiliki hak akses ke fitur ini.' ]); exit; } return $user; } /** * Middleware Opsional untuk mendukung Guest Mode. * Jika user login, akan mengembalikan data user. * Jika belum login, akan mengembalikan null (sebagai Guest) dan proses tetap berlanjut. * * @return array|null Data user jika login, atau null jika guest */ function optionalAuth(): ?array { if (isset($_SESSION['user']) && is_array($_SESSION['user'])) { return $_SESSION['user']; } return null; }