-
diff --git a/apps/studio/pages/project/[ref]/settings/addons.tsx b/apps/studio/pages/project/[ref]/settings/addons.tsx
index d9bf4b63684..c24befee049 100644
--- a/apps/studio/pages/project/[ref]/settings/addons.tsx
+++ b/apps/studio/pages/project/[ref]/settings/addons.tsx
@@ -1,4 +1,4 @@
-import Addons from 'components/interfaces/Settings/Addons/Addons'
+import { Addons } from 'components/interfaces/Settings/Addons/Addons'
import DefaultLayout from 'components/layouts/DefaultLayout'
import SettingsLayout from 'components/layouts/ProjectSettingsLayout/SettingsLayout'
import {
diff --git a/apps/studio/pages/project/[ref]/settings/auth.tsx b/apps/studio/pages/project/[ref]/settings/auth.tsx
deleted file mode 100644
index ce87957dfd9..00000000000
--- a/apps/studio/pages/project/[ref]/settings/auth.tsx
+++ /dev/null
@@ -1,106 +0,0 @@
-import { useParams } from 'common'
-import DefaultLayout from 'components/layouts/DefaultLayout'
-import SettingsLayout from 'components/layouts/ProjectSettingsLayout/SettingsLayout'
-import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState'
-import { ChevronRight } from 'lucide-react'
-import Link from 'next/link'
-import type { NextPageWithLayout } from 'types'
-
-const ProjectSettings: NextPageWithLayout = () => {
- const { ref } = useParams() as { ref: string }
-
- return (
-
-
-
- All settings are now under configuration within the Authentication page.
-
-
- General user signup
-
-
-
- Password settings in email provider
-
-
-
- User sessions
-
-
-
- Refresh tokens
-
-
-
- Bot and abuse protection
-
-
-
- SMTP settings
-
-
-
- Access token expiry
-
-
-
- Multifactor authentication
-
-
-
- Third party authentication
-
-
-
- Max request duration
-
-
-
- Max direct database connections
-
-
-
-
- )
-}
-
-ProjectSettings.getLayout = (page) => (
-
- {page}
-
-)
-
-export default ProjectSettings
diff --git a/apps/studio/pages/project/[ref]/settings/general.tsx b/apps/studio/pages/project/[ref]/settings/general.tsx
index 894cf9b36eb..11943bbd52f 100644
--- a/apps/studio/pages/project/[ref]/settings/general.tsx
+++ b/apps/studio/pages/project/[ref]/settings/general.tsx
@@ -20,7 +20,8 @@ const ProjectSettings: NextPageWithLayout = () => {
const { data: selectedOrganization } = useSelectedOrganizationQuery()
const isBranch = !!project?.parent_project_ref
- const { projectsTransfer: projectTransferEnabled } = useIsFeatureEnabled(['projects:transfer'])
+ const { projectsTransfer: projectTransferEnabled, projectSettingsCustomDomains } =
+ useIsFeatureEnabled(['projects:transfer', 'project_settings:custom_domains'])
const { data: subscription } = useOrgSubscriptionQuery({ orgSlug: selectedOrganization?.slug })
const hasHipaaAddon = subscriptionHasHipaaAddon(subscription)
@@ -37,7 +38,7 @@ const ProjectSettings: NextPageWithLayout = () => {
{/* this is only settable on compliance orgs, currently that means HIPAA orgs */}
{!isBranch && hasHipaaAddon &&
}
-
+ {projectSettingsCustomDomains &&
}
{!isBranch && projectTransferEnabled &&
}
{!isBranch &&
}
diff --git a/apps/studio/pages/project/[ref]/settings/jwt/index.tsx b/apps/studio/pages/project/[ref]/settings/jwt/index.tsx
index 07f3565d857..02364d45227 100644
--- a/apps/studio/pages/project/[ref]/settings/jwt/index.tsx
+++ b/apps/studio/pages/project/[ref]/settings/jwt/index.tsx
@@ -8,16 +8,22 @@ import { JwtSecretUpdateError, JwtSecretUpdateStatus } from '@supabase/shared-ty
import { useQueryClient } from '@tanstack/react-query'
import { useParams } from 'common'
import { JWT_SECRET_UPDATE_ERROR_MESSAGES } from 'components/interfaces/JwtSecrets/jwt.constants'
+import { UnknownInterface } from 'components/ui/UnknownInterface'
import { useJwtSecretUpdatingStatusQuery } from 'data/config/jwt-secret-updating-status-query'
import { configKeys } from 'data/config/keys'
+import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { useEffect, useRef } from 'react'
import { toast } from 'sonner'
const JWTKeysLegacyPage: NextPageWithLayout = () => {
- const { ref: projectRef, source } = useParams()
const client = useQueryClient()
+ const { ref: projectRef } = useParams()
+ const { projectSettingsLegacyJwtKeys } = useIsFeatureEnabled(['project_settings:legacy_jwt_keys'])
- const { data } = useJwtSecretUpdatingStatusQuery({ projectRef })
+ const { data } = useJwtSecretUpdatingStatusQuery(
+ { projectRef },
+ { enabled: projectSettingsLegacyJwtKeys }
+ )
const jwtSecretUpdateStatus = data?.jwtSecretUpdateStatus
const jwtSecretUpdateError = data?.jwtSecretUpdateError
@@ -44,14 +50,20 @@ const JWTKeysLegacyPage: NextPageWithLayout = () => {
previousJwtSecretUpdateStatus.current = jwtSecretUpdateStatus
}, [jwtSecretUpdateStatus])
- return
+ if (!projectSettingsLegacyJwtKeys) {
+ return
+ }
+
+ return (
+
+
+
+ )
}
JWTKeysLegacyPage.getLayout = (page) => (
-
- {page}
-
+ {page}
)
diff --git a/packages/common/enabled-features/enabled-features.json b/packages/common/enabled-features/enabled-features.json
index 4c0f50f6cc2..726353ef525 100644
--- a/packages/common/enabled-features/enabled-features.json
+++ b/packages/common/enabled-features/enabled-features.json
@@ -46,6 +46,12 @@
"project_homepage:show_instance_size": true,
"project_homepage:show_examples": true,
+ "project_addons:dedicated_ipv4_address": true,
+ "project_settings:custom_domains": true,
+ "project_settings:show_disable_legacy_api_keys": true,
+ "project_settings:legacy_jwt_keys": true,
+ "project_settings:log_drains": true,
+
"reports:all": true,
"table_editor:enable_rls_toggle": true
diff --git a/packages/common/enabled-features/enabled-features.schema.json b/packages/common/enabled-features/enabled-features.schema.json
index 07a42fa4d0d..e6cd53fb668 100644
--- a/packages/common/enabled-features/enabled-features.schema.json
+++ b/packages/common/enabled-features/enabled-features.schema.json
@@ -153,6 +153,28 @@
"description": "Show all client libraries examples in the project homepage. When false, all client library examples will be hidden except the JavaScript client library."
},
+ "project_addons:dedicated_ipv4_address": {
+ "type": "boolean",
+ "description": "Show the dedicated IPv4 address addon"
+ },
+
+ "project_settings:custom_domains": {
+ "type": "boolean",
+ "description": "Show the custom domain configuration section + custom domain addon"
+ },
+ "project_settings:show_disable_legacy_api_keys": {
+ "type": "boolean",
+ "description": "Show the disable legacy API keys section in project settings API Keys page"
+ },
+ "project_settings:legacy_jwt_keys": {
+ "type": "boolean",
+ "description": "Enable the legacy JWT secret page in project settings"
+ },
+ "project_settings:log_drains": {
+ "type": "boolean",
+ "description": "Enable the log drains page in project settings"
+ },
+
"reports:all": {
"type": "boolean",
"description": "Enable the project reports page"
@@ -196,6 +218,11 @@
"project_homepage:show_instance_size",
"project_homepage:show_examples",
"project_homepage:show_all_client_libraries",
+ "project_addons:dedicated_ipv4_address",
+ "project_settings:custom_domains",
+ "project_settings:show_disable_legacy_api_keys",
+ "project_settings:legacy_jwt_keys",
+ "project_settings:log_drains",
"project_connection:javascript_example",
"project_connection:dart_example",
"reports:all",