Home / Function/ SecurityOptions() — supabase Function Reference

SecurityOptions() — supabase Function Reference

Architecture documentation for the SecurityOptions() function in SecurityOptions.tsx from the supabase codebase.

Entity Profile

Relationship Graph

Source Code

apps/studio/components/interfaces/ProjectCreation/SecurityOptions.tsx lines 24–107

export const SecurityOptions = ({ form, layout = 'horizontal' }: SecurityOptionsProps) => {
  const rlsExperimentVariant = usePHFlag<'control' | 'test' | false | undefined>(
    'projectCreationEnableRlsEventTrigger'
  )
  const shouldShowEnableRlsEventTrigger = rlsExperimentVariant === 'test'
  const dataApi = useWatch_Shadcn_({ control: form.control, name: 'dataApi' })

  return (
    <Panel.Content className="pb-8">
      <FormItemLayout layout={layout} label="Security" isReactForm={false}>
        <div className="flex flex-col gap-4">
          <FormField_Shadcn_
            name="dataApi"
            control={form.control}
            render={({ field }) => (
              <FormItem_Shadcn_ className="flex items-start gap-3">
                <FormControl_Shadcn_>
                  <Checkbox_Shadcn_
                    checked={field.value}
                    disabled={field.disabled}
                    onCheckedChange={(value) => field.onChange(value === true)}
                  />
                </FormControl_Shadcn_>
                <div className="space-y-1">
                  <FormLabel_Shadcn_ className="text-sm text-foreground">
                    Enable Data API
                  </FormLabel_Shadcn_>
                  <FormDescription_Shadcn_ className="text-foreground-lighter">
                    Autogenerate a RESTful API for your public schema. Recommended if using a client
                    library like{' '}
                    <Link
                      href="https://supabase.com/docs/reference/javascript/introduction"
                      target="_blank"
                      className="text-link"
                    >
                      supabase-js
                    </Link>
                    .
                  </FormDescription_Shadcn_>
                </div>
              </FormItem_Shadcn_>
            )}
          />

          {shouldShowEnableRlsEventTrigger && (
            <FormField_Shadcn_
              name="enableRlsEventTrigger"
              control={form.control}
              render={({ field }) => (
                <FormItem_Shadcn_ className="flex items-start gap-3">
                  <FormControl_Shadcn_>
                    <Checkbox_Shadcn_
                      checked={field.value}
                      disabled={field.disabled}
                      onCheckedChange={(value) => field.onChange(value === true)}
                    />
                  </FormControl_Shadcn_>
                  <div className="space-y-1">
                    <FormLabel_Shadcn_ className="text-sm text-foreground">
                      Enable automatic RLS
                    </FormLabel_Shadcn_>
                    <FormDescription_Shadcn_ className="text-foreground-lighter">
                      Create an event trigger that automatically enables Row Level Security on all
                      new tables in the public schema.
                    </FormDescription_Shadcn_>
                  </div>
                </FormItem_Shadcn_>
              )}
            />
          )}

          {!dataApi && (
            <Admonition
              type="warning"
              title="Client libraries need Data API to query your database"
            >
              Disabling it means supabase-js and similar libraries can't query or mutate data.
            </Admonition>
          )}
        </div>
      </FormItemLayout>
    </Panel.Content>
  )
}

Subdomains

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free