+
@@ -21,6 +22,9 @@ export function TopBar() {
className="text-foreground-lighter border border-border rounded px-2 py-1 text-xs"
/>
+
+
+
)
}
diff --git a/apps/studio/components/v2/views/V2AuthSettingsView.tsx b/apps/studio/components/v2/views/V2AuthSettingsView.tsx
index c12d2bb26af..bdec93664dc 100644
--- a/apps/studio/components/v2/views/V2AuthSettingsView.tsx
+++ b/apps/studio/components/v2/views/V2AuthSettingsView.tsx
@@ -1,27 +1,26 @@
'use client'
-import { useMemo } from 'react'
import { usePathname, useRouter, useSearchParams } from 'next/navigation'
+import { useMemo } from 'react'
+import type { NextPageWithLayout } from 'types'
import { Tabs_Shadcn_, TabsContent_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_ } from 'ui'
import { useV2Params } from '@/app/v2/V2ParamsContext'
import { BannerStackProvider } from '@/components/ui/BannerStack/BannerStackProvider'
import { StudioDataWorkspace } from '@/components/v2/data/StudioDataWorkspace'
-
-import UrlConfigurationPage from '@/pages/project/[ref]/auth/url-configuration'
-import ProtectionPage from '@/pages/project/[ref]/auth/protection'
+import AuditLogsPage from '@/pages/project/[ref]/auth/audit-logs'
+import HooksPage from '@/pages/project/[ref]/auth/hooks'
import MfaPage from '@/pages/project/[ref]/auth/mfa'
-import SessionsPage from '@/pages/project/[ref]/auth/sessions'
+import OAuthServerPage from '@/pages/project/[ref]/auth/oauth-server'
+import PerformancePage from '@/pages/project/[ref]/auth/performance'
+import AuthPoliciesPage from '@/pages/project/[ref]/auth/policies'
+import ProtectionPage from '@/pages/project/[ref]/auth/protection'
import RateLimitsPage from '@/pages/project/[ref]/auth/rate-limits'
+import SessionsPage from '@/pages/project/[ref]/auth/sessions'
import SmtpPage from '@/pages/project/[ref]/auth/smtp'
import TemplatesPage from '@/pages/project/[ref]/auth/templates'
-import AuthPoliciesPage from '@/pages/project/[ref]/auth/policies'
-import HooksPage from '@/pages/project/[ref]/auth/hooks'
import ThirdPartyPage from '@/pages/project/[ref]/auth/third-party'
-import OAuthServerPage from '@/pages/project/[ref]/auth/oauth-server'
-import AuditLogsPage from '@/pages/project/[ref]/auth/audit-logs'
-import PerformancePage from '@/pages/project/[ref]/auth/performance'
-import type { NextPageWithLayout } from 'types'
+import UrlConfigurationPage from '@/pages/project/[ref]/auth/url-configuration'
const TABS: Array<{ key: string; label: string; content: NextPageWithLayout }> = [
{ key: 'url', label: 'URL', content: UrlConfigurationPage },
@@ -64,7 +63,7 @@ export function V2AuthSettingsView() {
-
+
{TABS.map((tab) => (
{
- const { preset, id } = useParams()
- const { data: project } = useSelectedProjectQuery()
-
- // need to maintain a list of filters for each tab
- const [filters, setFilters] = useState<{ level: LINTER_LEVELS; filters: string[] }[]>([
- { level: LINTER_LEVELS.ERROR, filters: [] },
- { level: LINTER_LEVELS.WARN, filters: [] },
- { level: LINTER_LEVELS.INFO, filters: [] },
- ])
- const [currentTab, setCurrentTab] = useState(
- (preset as LINTER_LEVELS) ?? LINTER_LEVELS.ERROR
- )
- const {
- data,
- isPending: isLoading,
- isRefetching,
- refetch,
- } = useProjectLintsQuery({
- projectRef: project?.ref,
- })
-
- const activeLints = useMemo(() => {
- return [...(data ?? [])]?.filter((x) => x.categories.includes('PERFORMANCE'))
- }, [data])
- const currentTabFilters = (filters.find((filter) => filter.level === currentTab)?.filters ||
- []) as string[]
- const filteredLints = activeLints
- .filter((x) => x.level === currentTab)
- .filter((x) => (currentTabFilters.length > 0 ? currentTabFilters.includes(x.name) : x))
- const filterOptions = lintInfoMap
- // only show filters for lint types which are present in the results and not ignored
- .filter((item) =>
- activeLints.some((lint) => lint.name === item.name && lint.level === currentTab)
- )
- .map((type) => ({
- name: type.title,
- value: type.name,
- }))
-
- const selectedLint: Lint | null = useMemo(() => {
- return activeLints.find((lint) => lint.cache_key === id) ?? null
- }, [id, activeLints])
-
return (
-
-
-
-
-
-
-
-
+
)
}
diff --git a/apps/studio/pages/project/[ref]/advisors/security.tsx b/apps/studio/pages/project/[ref]/advisors/security.tsx
index f58aa695d3d..597efc7466c 100644
--- a/apps/studio/pages/project/[ref]/advisors/security.tsx
+++ b/apps/studio/pages/project/[ref]/advisors/security.tsx
@@ -1,105 +1,10 @@
-import { useParams } from 'common'
-import { LINTER_LEVELS } from 'components/interfaces/Linter/Linter.constants'
-import { lintInfoMap } from 'components/interfaces/Linter/Linter.utils'
-import LinterDataGrid from 'components/interfaces/Linter/LinterDataGrid'
-import LinterFilters from 'components/interfaces/Linter/LinterFilters'
-import { LinterPageFooter } from 'components/interfaces/Linter/LinterPageFooter'
-import LintPageTabs from 'components/interfaces/Linter/LintPageTabs'
+import { AdvisorLintsPageContent } from 'components/interfaces/Advisors/AdvisorLintsPageContent'
import AdvisorsLayout from 'components/layouts/AdvisorsLayout/AdvisorsLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
-import { FormHeader } from 'components/ui/Forms/FormHeader'
-import { Lint, useProjectLintsQuery } from 'data/lint/lint-query'
-import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
-import { DOCS_URL } from 'lib/constants'
-import { useMemo, useState } from 'react'
import type { NextPageWithLayout } from 'types'
-import { LoadingLine } from 'ui'
const ProjectLints: NextPageWithLayout = () => {
- const { preset, id } = useParams()
- const { data: project } = useSelectedProjectQuery()
-
- // need to maintain a list of filters for each tab
- const [filters, setFilters] = useState<{ level: LINTER_LEVELS; filters: string[] }[]>([
- { level: LINTER_LEVELS.ERROR, filters: [] },
- { level: LINTER_LEVELS.WARN, filters: [] },
- { level: LINTER_LEVELS.INFO, filters: [] },
- ])
- const [currentTab, setCurrentTab] = useState(
- (preset as LINTER_LEVELS) ?? LINTER_LEVELS.ERROR
- )
- const {
- data,
- isPending: isLoading,
- isRefetching,
- refetch,
- } = useProjectLintsQuery({
- projectRef: project?.ref,
- })
-
- const activeLints = (data ?? []).filter((lint) => lint.categories.includes('SECURITY'))
- // hide vulnerable_postgres_version lint temporarily
- // https://linear.app/supabase/project/pg-minor-version-upgrade-for-security-vulnerabilities-0124b2c2dcf5
- // https://github.com/supabase/supabase/pull/38280/files
- //.filter((lint) => lint.name !== 'vulnerable_postgres_version')
-
- const currentTabFilters = (filters.find((filter) => filter.level === currentTab)?.filters ||
- []) as string[]
- const filteredLints = activeLints
- .filter((x) => x.level === currentTab)
- .filter((x) => (currentTabFilters.length > 0 ? currentTabFilters.includes(x.name) : x))
- const filterOptions = lintInfoMap
- // only show filters for lint types which are present in the results and not ignored
- .filter((item) =>
- activeLints.some((lint) => lint.name === item.name && lint.level === currentTab)
- )
- .map((type) => ({
- name: type.title,
- value: type.name,
- }))
-
- const selectedLint: Lint | null = useMemo(() => {
- return activeLints.find((lint) => lint.cache_key === id) ?? null
- }, [id, activeLints])
-
- return (
-
-
-
-
-
-
-
-
- )
+ return
}
ProjectLints.getLayout = (page) => (