Skip to content

Commit cb359f6

Browse files
committed
Update deployment page
1 parent dee46ec commit cb359f6

File tree

8 files changed

+100
-24
lines changed

8 files changed

+100
-24
lines changed

site/src/AppRouter.tsx

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ import { XServiceContext } from "xServices/StateContext"
2121
import { AuthAndFrame } from "./components/AuthAndFrame/AuthAndFrame"
2222
import { RequireAuth } from "./components/RequireAuth/RequireAuth"
2323
import { SettingsLayout } from "./components/SettingsLayout/SettingsLayout"
24-
import { GeneralSettingsPage } from "pages/DeploySettingsPage/GeneralSettingsPage"
25-
import { SecuritySettingsPage } from "pages/DeploySettingsPage/SecuritySettingsPage"
26-
import { MetricsSettingsPage } from "pages/DeploySettingsPage/MetricsSettingsPage"
27-
import { AuthSettingsPage } from "pages/DeploySettingsPage/AuthSettingsPage"
2824
import { DeploySettingsLayout } from "components/DeploySettingsLayout/DeploySettingsLayout"
2925

3026
// Lazy load pages
@@ -72,6 +68,18 @@ const GroupPage = lazy(() => import("./pages/GroupsPage/GroupPage"))
7268
const SettingsGroupPage = lazy(
7369
() => import("./pages/GroupsPage/SettingsGroupPage"),
7470
)
71+
const GeneralSettingsPage = lazy(
72+
() => import("./pages/DeploySettingsPage/GeneralSettingsPage"),
73+
)
74+
const SecuritySettingsPage = lazy(
75+
() => import("./pages/DeploySettingsPage/SecuritySettingsPage"),
76+
)
77+
const MetricsSettingsPage = lazy(
78+
() => import("./pages/DeploySettingsPage/MetricsSettingsPage"),
79+
)
80+
const AuthSettingsPage = lazy(
81+
() => import("./pages/DeploySettingsPage/AuthSettingsPage"),
82+
)
7583

7684
export const AppRouter: FC = () => {
7785
const xServices = useContext(XServiceContext)
@@ -242,44 +250,60 @@ export const AppRouter: FC = () => {
242250
/>
243251
</Route>
244252

245-
<Route path="settings/deployment">
253+
<Route path="/settings/deployment">
246254
<Route
247255
path="general"
248256
element={
249257
<AuthAndFrame>
250-
<DeploySettingsLayout>
251-
<GeneralSettingsPage />
252-
</DeploySettingsLayout>
258+
<RequirePermission
259+
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
260+
>
261+
<DeploySettingsLayout>
262+
<GeneralSettingsPage />
263+
</DeploySettingsLayout>
264+
</RequirePermission>
253265
</AuthAndFrame>
254266
}
255267
/>
256268
<Route
257269
path="security"
258270
element={
259271
<AuthAndFrame>
260-
<DeploySettingsLayout>
261-
<SecuritySettingsPage />
262-
</DeploySettingsLayout>
272+
<RequirePermission
273+
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
274+
>
275+
<DeploySettingsLayout>
276+
<SecuritySettingsPage />
277+
</DeploySettingsLayout>
278+
</RequirePermission>
263279
</AuthAndFrame>
264280
}
265281
/>
266282
<Route
267283
path="metrics"
268284
element={
269285
<AuthAndFrame>
270-
<DeploySettingsLayout>
271-
<MetricsSettingsPage />
272-
</DeploySettingsLayout>
286+
<RequirePermission
287+
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
288+
>
289+
<DeploySettingsLayout>
290+
<MetricsSettingsPage />
291+
</DeploySettingsLayout>
292+
</RequirePermission>
273293
</AuthAndFrame>
274294
}
275295
/>
276296
<Route
277297
path="auth"
278298
element={
279299
<AuthAndFrame>
280-
<DeploySettingsLayout>
281-
<AuthSettingsPage />
282-
</DeploySettingsLayout>
300+
<RequirePermission
301+
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
302+
>
303+
<DeploySettingsLayout>
304+
<AuthSettingsPage />
305+
</DeploySettingsLayout>
306+
</RequirePermission>
283307
</AuthAndFrame>
284308
}
285309
/>

site/src/components/Navbar/Navbar.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ export const Navbar: React.FC = () => {
1717
const canViewAuditLog =
1818
featureVisibility[FeatureNames.AuditLog] &&
1919
Boolean(permissions?.viewAuditLog)
20+
const canViewAdmin = Boolean(permissions?.viewDeploymentFlags)
2021
const onSignOut = () => authSend("SIGN_OUT")
2122

2223
return (
2324
<NavbarView
2425
user={me}
2526
onSignOut={onSignOut}
2627
canViewAuditLog={canViewAuditLog}
28+
canViewAdmin={canViewAdmin}
2729
/>
2830
)
2931
}

site/src/components/NavbarView/NavbarView.tsx

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,24 @@ export interface NavbarViewProps {
1717
user?: TypesGen.User
1818
onSignOut: () => void
1919
canViewAuditLog: boolean
20+
canViewAdmin: boolean
2021
}
2122

2223
export const Language = {
2324
workspaces: "Workspaces",
2425
templates: "Templates",
2526
users: "Users",
2627
audit: "Audit",
28+
admin: "Admin",
2729
}
2830

2931
const NavItems: React.FC<
30-
React.PropsWithChildren<{ className?: string; canViewAuditLog: boolean }>
31-
> = ({ className, canViewAuditLog }) => {
32+
React.PropsWithChildren<{
33+
className?: string
34+
canViewAuditLog: boolean
35+
canViewAdmin: boolean
36+
}>
37+
> = ({ className, canViewAuditLog, canViewAdmin }) => {
3238
const styles = useStyles()
3339
const location = useLocation()
3440

@@ -65,13 +71,21 @@ const NavItems: React.FC<
6571
</NavLink>
6672
</ListItem>
6773
)}
74+
{canViewAdmin && (
75+
<ListItem button className={styles.item}>
76+
<NavLink className={styles.link} to="/admin">
77+
{Language.admin}
78+
</NavLink>
79+
</ListItem>
80+
)}
6881
</List>
6982
)
7083
}
7184
export const NavbarView: React.FC<React.PropsWithChildren<NavbarViewProps>> = ({
7285
user,
7386
onSignOut,
7487
canViewAuditLog,
88+
canViewAdmin,
7589
}) => {
7690
const styles = useStyles()
7791
const [isDrawerOpen, setIsDrawerOpen] = useState(false)
@@ -98,7 +112,10 @@ export const NavbarView: React.FC<React.PropsWithChildren<NavbarViewProps>> = ({
98112
<div className={styles.drawerHeader}>
99113
<Logo fill="white" opacity={1} width={125} />
100114
</div>
101-
<NavItems canViewAuditLog={canViewAuditLog} />
115+
<NavItems
116+
canViewAuditLog={canViewAuditLog}
117+
canViewAdmin={canViewAdmin}
118+
/>
102119
</div>
103120
</Drawer>
104121

@@ -109,6 +126,7 @@ export const NavbarView: React.FC<React.PropsWithChildren<NavbarViewProps>> = ({
109126
<NavItems
110127
className={styles.desktopNavItems}
111128
canViewAuditLog={canViewAuditLog}
129+
canViewAdmin={canViewAdmin}
112130
/>
113131

114132
<div className={styles.profileButton}>

site/src/pages/DeploySettingsPage/AuthSettingsPage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
import { Stack } from "components/Stack/Stack"
2121
import React from "react"
2222

23-
export const AuthSettingsPage: React.FC = () => {
23+
const AuthSettingsPage: React.FC = () => {
2424
const { deploymentFlags } = useDeploySettings()
2525

2626
return (
@@ -154,3 +154,5 @@ export const AuthSettingsPage: React.FC = () => {
154154
</>
155155
)
156156
}
157+
158+
export default AuthSettingsPage

site/src/pages/DeploySettingsPage/GeneralSettingsPage.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
} from "components/DeploySettingsLayout/Option"
1414
import React from "react"
1515

16-
export const GeneralSettingsPage: React.FC = () => {
16+
const GeneralSettingsPage: React.FC = () => {
1717
const { deploymentFlags } = useDeploySettings()
1818

1919
return (
@@ -46,6 +46,23 @@ export const GeneralSettingsPage: React.FC = () => {
4646
</TableCell>
4747
</TableRow>
4848

49+
<TableRow>
50+
<TableCell>
51+
<OptionName>
52+
{deploymentFlags.address.name}
53+
</OptionName>
54+
<OptionDescription>
55+
{deploymentFlags.address.description}
56+
</OptionDescription>
57+
</TableCell>
58+
59+
<TableCell>
60+
<OptionValue>
61+
{deploymentFlags.address.value}
62+
</OptionValue>
63+
</TableCell>
64+
</TableRow>
65+
4966
<TableRow>
5067
<TableCell>
5168
<OptionName>
@@ -68,3 +85,5 @@ export const GeneralSettingsPage: React.FC = () => {
6885
</>
6986
)
7087
}
88+
89+
export default GeneralSettingsPage

site/src/pages/DeploySettingsPage/MetricsSettingsPage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
} from "components/DeploySettingsLayout/Option"
1818
import React from "react"
1919

20-
export const MetricsSettingsPage: React.FC = () => {
20+
const MetricsSettingsPage: React.FC = () => {
2121
const { deploymentFlags } = useDeploySettings()
2222

2323
return (
@@ -61,3 +61,5 @@ export const MetricsSettingsPage: React.FC = () => {
6161
</>
6262
)
6363
}
64+
65+
export default MetricsSettingsPage

site/src/pages/DeploySettingsPage/SecuritySettingsPage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
} from "components/DeploySettingsLayout/Option"
1818
import React from "react"
1919

20-
export const SecuritySettingsPage: React.FC = () => {
20+
const SecuritySettingsPage: React.FC = () => {
2121
const { deploymentFlags } = useDeploySettings()
2222

2323
return (
@@ -77,3 +77,5 @@ export const SecuritySettingsPage: React.FC = () => {
7777
</>
7878
)
7979
}
80+
81+
export default SecuritySettingsPage

site/src/xServices/auth/authXService.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const checks = {
1616
createTemplates: "createTemplates",
1717
deleteTemplates: "deleteTemplates",
1818
viewAuditLog: "viewAuditLog",
19+
viewDeploymentFlags: "viewDeploymentFlags",
1920
createGroup: "createGroup",
2021
} as const
2122

@@ -56,6 +57,12 @@ export const permissionsToCheck = {
5657
},
5758
action: "read",
5859
},
60+
[checks.viewDeploymentFlags]: {
61+
object: {
62+
resource_type: "deployment_flags",
63+
},
64+
action: "read",
65+
},
5966
[checks.createGroup]: {
6067
object: {
6168
resource_type: "group",

0 commit comments

Comments
 (0)