setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $tables = []; $rs = $pdo->query("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name"); foreach ($rs as $row) $tables[] = $row['name']; // Tables that should not be shown (auth data) $hidden = ['users']; echo ""; echo "

Tables: " . htmlspecialchars(implode(', ', array_diff($tables, $hidden))) . "

"; [$rbacClause, $rbacParams] = rbac_client_filter($tokenRec); foreach ($tables as $t) { if (in_array($t, $hidden, true)) continue; echo "

" . htmlspecialchars($t) . "

"; $t_esc = preg_replace('/[^A-Za-z0-9_]/', '', $t); $cols = []; $cr = $pdo->query("PRAGMA table_info($t_esc)"); foreach ($cr as $c) $cols[] = $c['name']; $clientScoped = in_array('clientCode', $cols, true); if ($clientScoped && ($tokenRec['role'] ?? '') !== 'admin') { $sql = "SELECT t.* FROM $t_esc t JOIN client ON client.clientCode = t.clientCode WHERE $rbacClause"; $stmt = $pdo->prepare($sql); foreach ($rbacParams as $k => $v) $stmt->bindValue($k, $v); $stmt->execute(); } else { $stmt = $pdo->query("SELECT * FROM $t_esc"); } echo ""; foreach ($cols as $c) echo ""; echo ""; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo ""; foreach ($cols as $c) { $val = $row[$c]; if ($val === null) { echo ""; } else { echo ""; } } echo ""; } echo "
" . htmlspecialchars($c) . "
NULL" . htmlspecialchars((string)$val) . "
"; } } catch (Throwable $e) { error_log($e->getMessage()); http_response_code(500); echo "Server error"; } finally { @unlink($tmp); }