From de4fbfb73127ec68abb5b98c7e8caa8a589b9d81 Mon Sep 17 00:00:00 2001 From: Ignacio Dobronich Date: Fri, 30 Jan 2026 11:50:04 +0700 Subject: [PATCH] chore: mfa enhanced entitlement (#41611) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Depends on https://github.com/supabase/platform/pull/28639 ### Changes - Add entitlement check for auth.mfa_enhanced_security feature in MFA settings - Disable the "Limit duration of AAL1 sessions" toggle when user lacks entitlement - Show upgrade prompt when Enhanced MFA Security is not available on user's plan ## Summary by CodeRabbit * **New Features** * Enhanced MFA Security option with upgrade availability * Cloud Marketplace contract linking eligibility checks * New entitlements: SOC2 reports, Private Link, realtime concurrency controls, function limits, project-scoped roles ✏️ Tip: You can customize this high-level summary in your review settings. --- .../MfaAuthSettingsForm.tsx | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/apps/studio/components/interfaces/Auth/MfaAuthSettingsForm/MfaAuthSettingsForm.tsx b/apps/studio/components/interfaces/Auth/MfaAuthSettingsForm/MfaAuthSettingsForm.tsx index 0a73663ea68..58bf221e192 100644 --- a/apps/studio/components/interfaces/Auth/MfaAuthSettingsForm/MfaAuthSettingsForm.tsx +++ b/apps/studio/components/interfaces/Auth/MfaAuthSettingsForm/MfaAuthSettingsForm.tsx @@ -116,9 +116,17 @@ export const MfaAuthSettingsForm = () => { 'custom_config_gotrue' ) - const { hasAccess: hasAccessToMFA, isLoading: isLoadingEntitlement } = + const { hasAccess: hasAccessToMFAEntitlement, isLoading: isLoadingEntitlement } = useCheckEntitlements('auth.mfa_phone') - const promptProPlanUpgrade = IS_PLATFORM && !hasAccessToMFA + const hasAccessToMFA = !IS_PLATFORM || hasAccessToMFAEntitlement + const promptProPlanUpgrade = IS_PLATFORM && !hasAccessToMFAEntitlement + + const { + hasAccess: hasAccessToEnhanceSecurityEntitlement, + isLoading: isLoadingEntitlementEnhanceSecurity, + } = useCheckEntitlements('auth.mfa_enhanced_security') + const hasAccessToEnhanceSecurity = !IS_PLATFORM || hasAccessToEnhanceSecurityEntitlement + const promptEnhancedSecurityUpgrade = IS_PLATFORM && !hasAccessToEnhanceSecurityEntitlement // For now, we support Twilio and Vonage. Twilio Verify is not supported and the remaining providers are community maintained. const sendSMSHookIsEnabled = @@ -282,7 +290,7 @@ export const MfaAuthSettingsForm = () => { ) } - if (isLoading || isLoadingEntitlement) { + if (isLoading || isLoadingEntitlement || isLoadingEntitlementEnhanceSecurity) { return ( @@ -580,13 +588,24 @@ export const MfaAuthSettingsForm = () => { field.onChange(!value)} - disabled={!canUpdateConfig} + disabled={!canUpdateConfig || !hasAccessToEnhanceSecurity} /> )} /> + + {promptEnhancedSecurityUpgrade && ( + + )} {securityForm.formState.isDirty && (