import type { PostgresPolicy, PostgresTable } from '@supabase/postgres-meta' import { noop } from 'lodash' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' import Panel from 'components/ui/Panel' import { useDatabasePoliciesQuery } from 'data/database-policies/database-policies-query' import { Info } from 'lucide-react' import { cn, Tooltip_Shadcn_, TooltipContent_Shadcn_, TooltipTrigger_Shadcn_ } from 'ui' import PolicyRow from './PolicyRow' import PolicyTableRowHeader from './PolicyTableRowHeader' interface PolicyTableRowProps { table: PostgresTable isLocked: boolean onSelectToggleRLS: (table: PostgresTable) => void onSelectCreatePolicy: () => void onSelectEditPolicy: (policy: PostgresPolicy) => void onSelectDeletePolicy: (policy: PostgresPolicy) => void } const PolicyTableRow = ({ table, isLocked, onSelectToggleRLS = noop, onSelectCreatePolicy, onSelectEditPolicy = noop, onSelectDeletePolicy = noop, }: PolicyTableRowProps) => { const { project } = useProjectContext() const { data } = useDatabasePoliciesQuery({ projectRef: project?.ref, connectionString: project?.connectionString, }) const policies = (data ?? []) .filter((policy) => policy.schema === table.schema && policy.table === table.name) .sort((a, b) => a.name.localeCompare(b.name)) return ( } > {!table.rls_enabled && !isLocked && (
Warning:{' '} Row Level Security is disabled. Your table is publicly readable and writable. Anyone with the project's anonymous key can modify or delete your data. Enable RLS and create access policies to keep your data secure.
)} {policies.length === 0 && (

No policies created yet

)} {policies?.map((policy) => ( ))} ) } export default PolicyTableRow