Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/docs/public/humans.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Supabase is 100% remote.
Aaron Byrne
Ada Wong
Adam Mokan
AJ Matias
Akash Manimaran
Alaister Young
Alan De Los Santos
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand Down Expand Up @@ -282,7 +290,7 @@ export const MfaAuthSettingsForm = () => {
)
}

if (isLoading || isLoadingEntitlement) {
if (isLoading || isLoadingEntitlement || isLoadingEntitlementEnhanceSecurity) {
return (
<PageSection>
<PageSectionContent>
Expand Down Expand Up @@ -580,13 +588,24 @@ export const MfaAuthSettingsForm = () => {
<Switch
checked={!field.value}
onCheckedChange={(value) => field.onChange(!value)}
disabled={!canUpdateConfig}
disabled={!canUpdateConfig || !hasAccessToEnhanceSecurity}
/>
</FormControl_Shadcn_>
</FormItemLayout>
)}
/>
</CardContent>

{promptEnhancedSecurityUpgrade && (
<UpgradeToPro
fullWidth
source="authEnhancedSecurity"
featureProposition="configure settings for Enhanced MFA Security"
primaryText="Enhanced MFA Security is not available on your plan"
secondaryText="Upgrade your plan to configure settings for Enhanced MFA Security"
buttonText="Upgrade"
/>
)}
<CardFooter className="justify-end space-x-2">
{securityForm.formState.isDirty && (
<Button type="default" onClick={() => securityForm.reset()}>
Expand Down
31 changes: 19 additions & 12 deletions apps/studio/components/interfaces/Database/Backups/BackupsList.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import dayjs from 'dayjs'
import { Clock } from 'lucide-react'
import { useRouter } from 'next/router'
import { useState } from 'react'
import { toast } from 'sonner'

import { useParams } from 'common'
import Panel from 'components/ui/Panel'
import { UpgradeToPro } from 'components/ui/UpgradeToPro'
import { useBackupRestoreMutation } from 'data/database/backup-restore-mutation'
import { DatabaseBackup, useBackupsQuery } from 'data/database/backups-query'
import { useSetProjectStatus } from 'data/projects/project-detail-query'
import dayjs from 'dayjs'
import { useCheckEntitlements } from 'hooks/misc/useCheckEntitlements'
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { PROJECT_STATUS } from 'lib/constants'
import { Admonition } from 'ui-patterns/admonition'
import { Clock } from 'lucide-react'
import { useRouter } from 'next/router'
import { useState } from 'react'
import { toast } from 'sonner'
import { TimestampInfo } from 'ui-patterns'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import { Admonition } from 'ui-patterns/admonition'

import { BackupItem } from './BackupItem'
import { BackupsEmpty } from './BackupsEmpty'
import { BackupsStorageAlert } from './BackupsStorageAlert'
Expand Down Expand Up @@ -111,11 +112,17 @@ export const BackupsList = () => {
}}
>
<div className="space-y-3">
<p className="text-sm">
This will restore your database to the backup made on{' '}
{dayjs(selectedBackup?.inserted_at).format('DD MMM YYYY')} at{' '}
{dayjs(selectedBackup?.inserted_at).format('HH:mm:ss')} UTC.
</p>
{!!selectedBackup && (
<p className="text-sm">
This will restore your database to the backup made on{' '}
<TimestampInfo
displayAs="utc"
utcTimestamp={selectedBackup.inserted_at}
labelFormat="DD MMM YYYY HH:mm:ss (ZZ)"
className="!text-sm"
/>
</p>
)}

<Admonition
showIcon={false}
Expand Down
17 changes: 9 additions & 8 deletions apps/studio/components/ui/EditorPanel/EditorPanel.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
import { Book, Maximize2, X } from 'lucide-react'
import { useRouter } from 'next/router'
import { useState } from 'react'

import { LOCAL_STORAGE_KEYS, useParams } from 'common'
import { isExplainQuery } from 'components/interfaces/ExplainVisualizer/ExplainVisualizer.utils'
import { generateSnippetTitle } from 'components/interfaces/SQLEditor/SQLEditor.constants'
Expand All @@ -18,29 +14,33 @@ import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { BASE_PATH } from 'lib/constants'
import { useProfile } from 'lib/profile'
import { Book, Maximize2, X } from 'lucide-react'
import { useRouter } from 'next/router'
import { useState } from 'react'
import { useEditorPanelStateSnapshot } from 'state/editor-panel-state'
import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state'
import { useSqlEditorV2StateSnapshot } from 'state/sql-editor-v2'
import {
Button,
cn,
CodeBlock,
Command_Shadcn_,
CommandEmpty_Shadcn_,
CommandGroup_Shadcn_,
CommandInput_Shadcn_,
CommandItem_Shadcn_,
CommandList_Shadcn_,
HoverCard_Shadcn_,
Command_Shadcn_,
HoverCardContent_Shadcn_,
HoverCardTrigger_Shadcn_,
HoverCard_Shadcn_,
KeyboardShortcut,
Popover_Shadcn_,
PopoverContent_Shadcn_,
PopoverTrigger_Shadcn_,
Popover_Shadcn_,
SQL_ICON,
cn,
} from 'ui'
import { Admonition } from 'ui-patterns'

import { containsUnknownFunction, isReadOnlySelect } from '../AIAssistantPanel/AIAssistant.utils'
import { AIEditor } from '../AIEditor'
import { ButtonTooltip } from '../ButtonTooltip'
Expand Down Expand Up @@ -124,6 +124,7 @@ export const EditorPanel = () => {
sql: suffixWithLimit(currentValue, 100),
projectRef: project?.ref,
connectionString: project?.connectionString,
isStatementTimeoutDisabled: true,
handleError: (executeError) => {
throw executeError
},
Expand Down
2 changes: 1 addition & 1 deletion apps/studio/data/database/backups-query.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { useQuery } from '@tanstack/react-query'

import type { components } from 'data/api'
import { get, handleError } from 'data/fetchers'
import { useIsOrioleDbInAws } from 'hooks/misc/useSelectedProject'
import type { ResponseError, UseCustomQueryOptions } from 'types'

import { databaseKeys } from './keys'

export type BackupsVariables = {
Expand Down
Loading
Loading