import { UseFormReturn } from 'react-hook-form' import { Checkbox, cn, FormControl, FormDescription, FormField, FormItem, FormLabel, Tooltip, TooltipContent, TooltipTrigger, useWatch, } from 'ui' import { Admonition } from 'ui-patterns' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { CreateProjectForm } from './ProjectCreation.schema' import { InlineLink } from '@/components/ui/InlineLink' import Panel from '@/components/ui/Panel' import { useTrackDefaultPrivilegesExposure } from '@/hooks/misc/useDataApiRevokeOnCreateDefault' import { DOCS_URL } from '@/lib/constants' interface SecurityOptionsProps { form: UseFormReturn layout?: 'vertical' | 'horizontal' } export const SecurityOptions = ({ form, layout = 'horizontal' }: SecurityOptionsProps) => { const dataApi = useWatch({ control: form.control, name: 'dataApi' }) const dataApiDefaultPrivileges = useWatch({ control: form.control, name: 'dataApiDefaultPrivileges', }) const hasUserModified = form.getFieldState('dataApiDefaultPrivileges', form.formState).isDirty useTrackDefaultPrivilegesExposure({ surface: 'main', dataApiDefaultPrivileges: dataApiDefaultPrivileges ?? true, hasUserModified, }) return (
( field.onChange(value === true)} />
Enable Data API Autogenerate a RESTful API for your public schema. Recommended if using a client library like{' '} supabase-js .
)} /> ( {dataApi ? ( field.onChange(value === true)} /> ) : ( Enable the Data API to configure default privileges. )}
Automatically expose new tables Grants privileges to Data API roles by default, exposing new tables.
We recommend disabling this to control access manually.
)} /> ( field.onChange(value === true)} />
Enable automatic RLS Create an event trigger that automatically enables Row Level Security on all new tables in the public schema.
)} /> {!dataApi && ( Disabling it means supabase-js and similar libraries can't query or mutate data. )}
) }