Skip to content

Commit 0cdcc40

Browse files
committed
improvement(settings): combine session and network security settings
1 parent 738d2d9 commit 0cdcc40

14 files changed

Lines changed: 117 additions & 187 deletions

File tree

apps/sim/app/o/[organizationId]/settings/[section]/settings.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,6 @@ const AuditLogs = dynamic(() =>
5151
import('@/ee/audit-logs/components/audit-logs').then((m) => m.AuditLogs)
5252
)
5353
const SSO = dynamic(() => import('@/ee/sso/components/sso-settings').then((m) => m.SSO))
54-
const SessionPolicySettings = dynamic(() =>
55-
import('@/ee/session-policy/components/session-policy-settings').then(
56-
(m) => m.SessionPolicySettings
57-
)
58-
)
5954
const DataRetentionSettings = dynamic(() =>
6055
import('@/ee/data-retention/components/data-retention-settings').then(
6156
(m) => m.DataRetentionSettings
@@ -64,8 +59,8 @@ const DataRetentionSettings = dynamic(() =>
6459
const DataDrainsSettings = dynamic(() =>
6560
import('@/ee/data-drains/components/data-drains-settings').then((m) => m.DataDrainsSettings)
6661
)
67-
const OrganizationNetworkSettings = dynamic(() =>
68-
import('@/components/settings/organization-network').then((m) => m.OrganizationNetworkSettings)
62+
const OrganizationSecuritySettings = dynamic(() =>
63+
import('@/components/settings/organization-security').then((m) => m.OrganizationSecuritySettings)
6964
)
7065
const UsageMonitoring = dynamic(() =>
7166
import('@/ee/organization-usage/components/usage-monitoring').then((m) => m.UsageMonitoring)
@@ -116,8 +111,7 @@ export function OrganizationSettings({ section }: OrganizationSettingsProps) {
116111
/>
117112
)}
118113
{section === 'sso' && <SSO organizationId={organizationId} />}
119-
{section === 'sessions' && <SessionPolicySettings organizationId={organizationId} />}
120-
{section === 'network' && <OrganizationNetworkSettings organizationId={organizationId} />}
114+
{section === 'security' && <OrganizationSecuritySettings organizationId={organizationId} />}
121115
{section === 'data-retention' && <DataRetentionSettings organizationId={organizationId} />}
122116
{section === 'data-drains' && <DataDrainsSettings organizationId={organizationId} />}
123117
{section === 'whitelabeling' && <WhitelabelingSettings organizationId={organizationId} />}

apps/sim/app/o/[organizationId]/settings/navigation.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ describe('organization settings navigation', () => {
7373
)
7474
expect(resolveOrganizationSettingsSection('subscription')).toBe('billing')
7575
expect(resolveOrganizationSettingsSection('domains')).toBe('sso')
76+
expect(resolveOrganizationSettingsSection('sessions')).toBe('security')
77+
expect(resolveOrganizationSettingsSection('/o/one/settings/network')).toBe('security')
7678
expect(resolveOrganizationSettingsSection('skills')).toBeNull()
7779
expect(buildOrganizationNavItems('org', true).map(({ id }) => id)).toEqual([
7880
'home',
@@ -92,8 +94,7 @@ describe('organization settings navigation', () => {
9294
'governance:audit-logs',
9395
'governance:access-control',
9496
'governance:sso',
95-
'governance:sessions',
96-
'governance:network',
97+
'governance:security',
9798
'governance:data-retention',
9899
'governance:data-drains',
99100
'sim-search:integrations',

apps/sim/app/o/[organizationId]/settings/navigation.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,14 @@ export function resolveOrganizationSettingsSection(
3737
path,
3838
items: ORGANIZATION_SETTINGS_ITEMS,
3939
defaultSection: null,
40-
aliases: { organization: 'members', team: 'members', subscription: 'billing', domains: 'sso' },
40+
aliases: {
41+
organization: 'members',
42+
team: 'members',
43+
subscription: 'billing',
44+
domains: 'sso',
45+
sessions: 'security',
46+
network: 'security',
47+
},
4148
})
4249
}
4350

apps/sim/app/workspace/[workspaceId]/settings/[section]/page.test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ vi.mock('@/app/workspace/[workspaceId]/settings/navigation', () => ({
5151
'access-control',
5252
'audit-logs',
5353
'sso',
54-
'sessions',
55-
'network',
54+
'security',
5655
'data-retention',
5756
'data-drains',
5857
'whitelabeling',

apps/sim/app/workspace/[workspaceId]/settings/[section]/settings.tsx

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,6 @@ const AuditLogs = dynamic(() =>
9393
import('@/ee/audit-logs/components/audit-logs').then((m) => m.AuditLogs)
9494
)
9595
const SSO = dynamic(() => import('@/ee/sso/components/sso-settings').then((m) => m.SSO))
96-
const SessionPolicySettings = dynamic(() =>
97-
import('@/ee/session-policy/components/session-policy-settings').then(
98-
(m) => m.SessionPolicySettings
99-
)
100-
)
10196
const DataRetentionSettings = dynamic(() =>
10297
import('@/ee/data-retention/components/data-retention-settings').then(
10398
(m) => m.DataRetentionSettings
@@ -106,8 +101,8 @@ const DataRetentionSettings = dynamic(() =>
106101
const DataDrainsSettings = dynamic(() =>
107102
import('@/ee/data-drains/components/data-drains-settings').then((m) => m.DataDrainsSettings)
108103
)
109-
const OrganizationNetworkSettings = dynamic(() =>
110-
import('@/components/settings/organization-network').then((m) => m.OrganizationNetworkSettings)
104+
const OrganizationSecuritySettings = dynamic(() =>
105+
import('@/components/settings/organization-security').then((m) => m.OrganizationSecuritySettings)
111106
)
112107
const UsageMonitoring = dynamic(() =>
113108
import('@/ee/organization-usage/components/usage-monitoring').then((m) => m.UsageMonitoring)
@@ -204,17 +199,14 @@ export function SettingsPage({ section }: SettingsPageProps) {
204199
/>
205200
)}
206201
{effectiveSection === 'sso' && organizationId && <SSO organizationId={organizationId} />}
207-
{effectiveSection === 'sessions' && organizationId && (
208-
<SessionPolicySettings key={organizationId} organizationId={organizationId} />
209-
)}
210202
{effectiveSection === 'data-retention' && organizationId && (
211203
<DataRetentionSettings organizationId={organizationId} />
212204
)}
213205
{effectiveSection === 'data-drains' && organizationId && (
214206
<DataDrainsSettings organizationId={organizationId} />
215207
)}
216-
{effectiveSection === 'network' && organizationId && (
217-
<OrganizationNetworkSettings organizationId={organizationId} />
208+
{effectiveSection === 'security' && organizationId && (
209+
<OrganizationSecuritySettings organizationId={organizationId} />
218210
)}
219211
{effectiveSection === 'whitelabeling' && organizationId && (
220212
<WhitelabelingSettings organizationId={organizationId} />

apps/sim/app/workspace/[workspaceId]/settings/navigation.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ describe('unified settings navigation', () => {
4444
{ id: 'recently-deleted', label: 'Recently deleted', section: 'workspace' },
4545
{ id: 'self-host', label: 'Self hosting', section: 'platform' },
4646
{ id: 'sso', label: 'Single sign-on', section: 'organization' },
47-
{ id: 'sessions', label: 'Session policies', section: 'organization' },
48-
{ id: 'network', label: 'Network', section: 'organization' },
47+
{ id: 'security', label: 'Security', section: 'organization' },
4948
{ id: 'data-retention', label: 'Data retention', section: 'organization' },
5049
{ id: 'data-drains', label: 'Data drains', section: 'organization' },
5150
{ id: 'whitelabeling', label: 'White-labeling', section: 'organization' },
@@ -91,8 +90,7 @@ describe('unified settings navigation', () => {
9190
'audit-logs',
9291
'whitelabeling',
9392
'sso',
94-
'sessions',
95-
'network',
93+
'security',
9694
'data-retention',
9795
'data-drains',
9896
])
@@ -126,6 +124,8 @@ describe('resolveSettingsSection', () => {
126124
team: 'organization',
127125
'api-keys': 'apikeys',
128126
domains: 'sso',
127+
sessions: 'security',
128+
network: 'security',
129129
} as const
130130

131131
it('keeps legacy section links working', () => {

apps/sim/app/workspace/[workspaceId]/settings/navigation.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ const SECTION_ALIASES: Readonly<Record<string, SettingsSection>> = {
4444
'api-keys': 'apikeys',
4545
/** Verified domains moved into the SSO page. */
4646
domains: 'sso',
47+
sessions: 'security',
48+
network: 'security',
4749
}
4850

4951
export interface ResolvedSettingsSection {

apps/sim/components/settings/navigation.test.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,7 @@ describe('settings navigation boundaries', () => {
116116
'recently-deleted',
117117
'self-host',
118118
'sso',
119-
'sessions',
120-
'network',
119+
'security',
121120
'data-retention',
122121
'data-drains',
123122
'whitelabeling',
@@ -238,8 +237,7 @@ describe('settings navigation boundaries', () => {
238237
'access-control': false,
239238
'audit-logs': false,
240239
sso: true,
241-
sessions: true,
242-
network: true,
240+
security: true,
243241
'data-retention': false,
244242
'data-drains': false,
245243
usage: true,
@@ -302,9 +300,8 @@ describe('settings navigation boundaries', () => {
302300
'connected-accounts',
303301
'data-drains',
304302
'data-retention',
305-
'network',
306303
'organization',
307-
'sessions',
304+
'security',
308305
'sso',
309306
'usage',
310307
'whitelabeling',
@@ -322,8 +319,7 @@ describe('settings navigation boundaries', () => {
322319
'access-control': 'access-control',
323320
'audit-logs': 'audit-logs',
324321
sso: 'sso',
325-
sessions: 'sessions',
326-
network: 'network',
322+
security: 'security',
327323
'data-retention': 'data-retention',
328324
'data-drains': 'data-drains',
329325
whitelabeling: 'whitelabeling',

apps/sim/components/settings/navigation.ts

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import type { ComponentType } from 'react'
22
import {
33
ChartColumn,
44
ClipboardList,
5-
Clock,
65
Credit,
76
Database,
87
Globe,
@@ -55,8 +54,7 @@ export type OrganizationSettingsSection =
5554
| 'access-control'
5655
| 'audit-logs'
5756
| 'sso'
58-
| 'sessions'
59-
| 'network'
57+
| 'security'
6058
| 'data-retention'
6159
| 'data-drains'
6260
| 'whitelabeling'
@@ -116,8 +114,7 @@ export type UnifiedSettingsSection =
116114
| 'inbox'
117115
| 'sandboxes'
118116
| 'admin'
119-
| 'sessions'
120-
| 'network'
117+
| 'security'
121118
| 'data-retention'
122119
| 'data-drains'
123120
| 'mothership'
@@ -703,32 +700,17 @@ export const SETTINGS_SECTION_REGISTRY: readonly SettingsSectionRegistryEntry[]
703700
},
704701
},
705702
{
706-
label: 'Session policies',
707-
icon: Clock,
708-
docsLink: 'https://docs.sim.ai/platform/enterprise/session-policies',
703+
label: 'Security',
704+
icon: Lock,
709705
unified: {
710-
id: 'sessions',
711-
description: 'Limit session lifetimes and sign out members org-wide.',
706+
id: 'security',
707+
description: 'Manage session policies and view outbound IP addresses.',
712708
group: 'organization',
713709
order: 8,
714710
requiresHosted: true,
715711
requiresEnterprise: true,
716-
selfHostedOverride: 'sessionPolicies',
717-
organizationSection: 'sessions',
718-
},
719-
},
720-
{
721-
label: 'Network',
722-
icon: Globe,
723-
unified: {
724-
id: 'network',
725-
description: 'View outbound routing and the IP addresses to allow on your firewalls.',
726-
group: 'organization',
727-
order: 9,
728-
requiresHosted: true,
729-
requiresEnterprise: true,
730712
selfHostedOverride: 'always',
731-
organizationSection: 'network',
713+
organizationSection: 'security',
732714
},
733715
},
734716
{
@@ -921,8 +903,7 @@ const ORGANIZATION_SECTION_GROUPS: Record<OrganizationSettingsSection, Organizat
921903
'audit-logs': 'governance',
922904
'access-control': 'governance',
923905
sso: 'governance',
924-
sessions: 'governance',
925-
network: 'governance',
906+
security: 'governance',
926907
'data-retention': 'governance',
927908
'data-drains': 'governance',
928909
integrations: 'sim-search',
@@ -1065,8 +1046,7 @@ export function getOrganizationSettingsFeatures(
10651046
'access-control': features.accessControl,
10661047
'audit-logs': features.auditLogs,
10671048
sso: features.sso,
1068-
sessions: features.sessionPolicies,
1069-
network: true,
1049+
security: true,
10701050
'data-retention': features.dataRetention,
10711051
'data-drains': features.dataDrains,
10721052
usage: features.usageMonitoring,

0 commit comments

Comments
 (0)