mirror of
https://github.com/supabase/supabase.git
synced 2026-05-26 13:42:56 +08:00
* Add settings for queues: toggle expose through postgrest + permissions via table privileges * Ensure appropriate grants are granted when toggling, and revoked when disabling * Update to use queues_public schema * Update queue schema to pgmq_public and add/remove from data api when enabling/disabling * Fix query for retrieving toggle state * Add schema invalidation * Remove hard code * Use QueuesSettings from Queues folder, remove from NewQueues * Update SQL for toggling exposure + support RLS enabling * Support toggling RLS for a queue * Update admonition copy in queues for enabling/disable postgrest exposure * Add custom RLS policy for queue * Minor style fixes * Fix * Remove hard code * Update RLS to add message regarding relevancy only if exposure to PostgREST is enabled * Update message in exposing queues to postgREST * Address feedback * Address feedback * Don't revoke postgres role stuff * Remove hard code * Update copy * Update * Address Oli's feedback, ensure that queues ALL have RLS enabled prior to allowing exposure to PostgREST * Address remaining feedback * Remove hardcode * Update * Address feedback
77 lines
2.4 KiB
TypeScript
77 lines
2.4 KiB
TypeScript
import { useState } from 'react'
|
|
import { AlertDescription_Shadcn_, AlertTitle_Shadcn_, Alert_Shadcn_, Button, Modal } from 'ui'
|
|
|
|
import { PROTECTED_SCHEMAS } from 'lib/constants/schemas'
|
|
import { AlertCircle } from 'lucide-react'
|
|
|
|
export const ProtectedSchemaModal = ({
|
|
visible,
|
|
onClose,
|
|
}: {
|
|
visible: boolean
|
|
onClose: () => void
|
|
}) => {
|
|
return (
|
|
<Modal
|
|
size="medium"
|
|
visible={visible}
|
|
header="Schemas managed by Supabase"
|
|
customFooter={
|
|
<div className="flex items-center justify-end space-x-2">
|
|
<Button type="default" onClick={() => onClose()}>
|
|
Understood
|
|
</Button>
|
|
</div>
|
|
}
|
|
onCancel={() => onClose()}
|
|
>
|
|
<Modal.Content className="space-y-2">
|
|
<p className="text-sm">
|
|
The following schemas are managed by Supabase and are currently protected from write
|
|
access through the dashboard.
|
|
</p>
|
|
<div className="flex flex-wrap gap-1">
|
|
{PROTECTED_SCHEMAS.map((schema) => (
|
|
<code key={schema} className="text-xs">
|
|
{schema}
|
|
</code>
|
|
))}
|
|
</div>
|
|
<p className="text-sm !mt-4">
|
|
These schemas are critical to the functionality of your Supabase project and hence we
|
|
highly recommend not altering them.
|
|
</p>
|
|
<p className="text-sm">
|
|
You can, however, still interact with those schemas through the SQL Editor although we
|
|
advise you only do so if you know what you are doing.
|
|
</p>
|
|
</Modal.Content>
|
|
</Modal>
|
|
)
|
|
}
|
|
|
|
const ProtectedSchemaWarning = ({ schema, entity }: { schema: string; entity: string }) => {
|
|
const [showModal, setShowModal] = useState(false)
|
|
|
|
return (
|
|
<>
|
|
<Alert_Shadcn_>
|
|
<AlertCircle strokeWidth={2} />
|
|
<AlertTitle_Shadcn_>Currently viewing {entity} from a protected schema</AlertTitle_Shadcn_>
|
|
<AlertDescription_Shadcn_>
|
|
<p className="mb-2">
|
|
The <code className="text-xs">{schema}</code> schema is managed by Supabase and is
|
|
read-only through the dashboard.
|
|
</p>
|
|
<Button type="default" size="tiny" onClick={() => setShowModal(true)}>
|
|
Learn more
|
|
</Button>
|
|
</AlertDescription_Shadcn_>
|
|
</Alert_Shadcn_>
|
|
<ProtectedSchemaModal visible={showModal} onClose={() => setShowModal(false)} />
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default ProtectedSchemaWarning
|