diff --git a/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/InstallationOverview.tsx b/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/InstallationOverview.tsx index 6e0528d6a5d36..fa12685ee6640 100644 --- a/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/InstallationOverview.tsx +++ b/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/InstallationOverview.tsx @@ -1,9 +1,11 @@ import { zodResolver } from '@hookform/resolvers/zod' +import { PermissionAction } from '@supabase/shared-types/out/constants' import { ButtonTooltip } from 'components/ui/ButtonTooltip' import { useStripeSyncInstallMutation } from 'data/database-integrations/stripe/stripe-sync-install-mutation' import { useStripeSyncUninstallMutation } from 'data/database-integrations/stripe/stripe-sync-uninstall-mutation' import { useSchemasQuery } from 'data/database/schemas-query' import { formatRelative } from 'date-fns' +import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions' import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject' import { useTrack } from 'lib/telemetry/track' import { AlertCircle, BadgeCheck, Check, ExternalLink, RefreshCwIcon } from 'lucide-react' @@ -73,6 +75,12 @@ export const StripeSyncInstallationPage = () => { connectionString: project?.connectionString, }) + // Check permissions for managing function secrets + const { can: canManageSecrets } = useAsyncCheckPermissions( + PermissionAction.FUNCTIONS_SECRET_WRITE, + '*' + ) + const isSyncing = isSyncRunning(syncState) const installed = isInstalled(installationStatus) @@ -328,12 +336,14 @@ export const StripeSyncInstallationPage = () => { setShouldShowInstallSheet(true)} - disabled={!canInstall} + disabled={!canInstall || !canManageSecrets} tooltip={{ content: { text: !canInstall ? 'Your database already uses a schema named "stripe"' - : undefined, + : !canManageSecrets + ? 'You need additional permissions to install the Stripe Sync Engine.' + : undefined, }, }} > @@ -343,9 +353,20 @@ export const StripeSyncInstallationPage = () => { ) : installed && !uninstalling ? (
- +
) : null } diff --git a/apps/www/components/Pricing/ComputePricingCalculator.tsx b/apps/www/components/Pricing/ComputePricingCalculator.tsx index d6759d610c56b..9239e75c9f829 100644 --- a/apps/www/components/Pricing/ComputePricingCalculator.tsx +++ b/apps/www/components/Pricing/ComputePricingCalculator.tsx @@ -208,7 +208,7 @@ const ComputePricingCalculator = ({ disableInteractivity }: { disableInteractivi {plans.map((plan: any) => ( - setActivePlan(plan)}> + setActivePlan(plan)}> {plan.name} ))}