Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
Update deployment page
  • Loading branch information
kylecarbs committed Oct 17, 2022
commit cb359f6520e1d7ec4ce27067ddb0a700b4a43c12
58 changes: 41 additions & 17 deletions site/src/AppRouter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@ import { XServiceContext } from "xServices/StateContext"
import { AuthAndFrame } from "./components/AuthAndFrame/AuthAndFrame"
import { RequireAuth } from "./components/RequireAuth/RequireAuth"
import { SettingsLayout } from "./components/SettingsLayout/SettingsLayout"
import { GeneralSettingsPage } from "pages/DeploySettingsPage/GeneralSettingsPage"
import { SecuritySettingsPage } from "pages/DeploySettingsPage/SecuritySettingsPage"
import { MetricsSettingsPage } from "pages/DeploySettingsPage/MetricsSettingsPage"
import { AuthSettingsPage } from "pages/DeploySettingsPage/AuthSettingsPage"
import { DeploySettingsLayout } from "components/DeploySettingsLayout/DeploySettingsLayout"

// Lazy load pages
Expand Down Expand Up @@ -72,6 +68,18 @@ const GroupPage = lazy(() => import("./pages/GroupsPage/GroupPage"))
const SettingsGroupPage = lazy(
() => import("./pages/GroupsPage/SettingsGroupPage"),
)
const GeneralSettingsPage = lazy(
() => import("./pages/DeploySettingsPage/GeneralSettingsPage"),
)
const SecuritySettingsPage = lazy(
() => import("./pages/DeploySettingsPage/SecuritySettingsPage"),
)
const MetricsSettingsPage = lazy(
() => import("./pages/DeploySettingsPage/MetricsSettingsPage"),
)
const AuthSettingsPage = lazy(
() => import("./pages/DeploySettingsPage/AuthSettingsPage"),
)

export const AppRouter: FC = () => {
const xServices = useContext(XServiceContext)
Expand Down Expand Up @@ -242,44 +250,60 @@ export const AppRouter: FC = () => {
/>
</Route>

<Route path="settings/deployment">
<Route path="/settings/deployment">
<Route
path="general"
element={
<AuthAndFrame>
<DeploySettingsLayout>
<GeneralSettingsPage />
</DeploySettingsLayout>
<RequirePermission
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
>
<DeploySettingsLayout>
<GeneralSettingsPage />
</DeploySettingsLayout>
</RequirePermission>
</AuthAndFrame>
}
/>
<Route
path="security"
element={
<AuthAndFrame>
<DeploySettingsLayout>
<SecuritySettingsPage />
</DeploySettingsLayout>
<RequirePermission
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
>
<DeploySettingsLayout>
<SecuritySettingsPage />
</DeploySettingsLayout>
</RequirePermission>
</AuthAndFrame>
}
/>
<Route
path="metrics"
element={
<AuthAndFrame>
<DeploySettingsLayout>
<MetricsSettingsPage />
</DeploySettingsLayout>
<RequirePermission
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
>
<DeploySettingsLayout>
<MetricsSettingsPage />
</DeploySettingsLayout>
</RequirePermission>
</AuthAndFrame>
}
/>
<Route
path="auth"
element={
<AuthAndFrame>
<DeploySettingsLayout>
<AuthSettingsPage />
</DeploySettingsLayout>
<RequirePermission
isFeatureVisible={Boolean(permissions?.viewDeploymentFlags)}
>
<DeploySettingsLayout>
<AuthSettingsPage />
</DeploySettingsLayout>
</RequirePermission>
</AuthAndFrame>
}
/>
Expand Down
2 changes: 2 additions & 0 deletions site/src/components/Navbar/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@ export const Navbar: React.FC = () => {
const canViewAuditLog =
featureVisibility[FeatureNames.AuditLog] &&
Boolean(permissions?.viewAuditLog)
const canViewAdmin = Boolean(permissions?.viewDeploymentFlags)
const onSignOut = () => authSend("SIGN_OUT")

return (
<NavbarView
user={me}
onSignOut={onSignOut}
canViewAuditLog={canViewAuditLog}
canViewAdmin={canViewAdmin}
/>
)
}
24 changes: 21 additions & 3 deletions site/src/components/NavbarView/NavbarView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,24 @@ export interface NavbarViewProps {
user?: TypesGen.User
onSignOut: () => void
canViewAuditLog: boolean
canViewAdmin: boolean
}

export const Language = {
workspaces: "Workspaces",
templates: "Templates",
users: "Users",
audit: "Audit",
admin: "Admin",
}

const NavItems: React.FC<
React.PropsWithChildren<{ className?: string; canViewAuditLog: boolean }>
> = ({ className, canViewAuditLog }) => {
React.PropsWithChildren<{
className?: string
canViewAuditLog: boolean
canViewAdmin: boolean
}>
> = ({ className, canViewAuditLog, canViewAdmin }) => {
const styles = useStyles()
const location = useLocation()

Expand Down Expand Up @@ -65,13 +71,21 @@ const NavItems: React.FC<
</NavLink>
</ListItem>
)}
{canViewAdmin && (
<ListItem button className={styles.item}>
<NavLink className={styles.link} to="/admin">
{Language.admin}
</NavLink>
</ListItem>
)}
</List>
)
}
export const NavbarView: React.FC<React.PropsWithChildren<NavbarViewProps>> = ({
user,
onSignOut,
canViewAuditLog,
canViewAdmin,
}) => {
const styles = useStyles()
const [isDrawerOpen, setIsDrawerOpen] = useState(false)
Expand All @@ -98,7 +112,10 @@ export const NavbarView: React.FC<React.PropsWithChildren<NavbarViewProps>> = ({
<div className={styles.drawerHeader}>
<Logo fill="white" opacity={1} width={125} />
</div>
<NavItems canViewAuditLog={canViewAuditLog} />
<NavItems
canViewAuditLog={canViewAuditLog}
canViewAdmin={canViewAdmin}
/>
</div>
</Drawer>

Expand All @@ -109,6 +126,7 @@ export const NavbarView: React.FC<React.PropsWithChildren<NavbarViewProps>> = ({
<NavItems
className={styles.desktopNavItems}
canViewAuditLog={canViewAuditLog}
canViewAdmin={canViewAdmin}
/>

<div className={styles.profileButton}>
Expand Down
4 changes: 3 additions & 1 deletion site/src/pages/DeploySettingsPage/AuthSettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
import { Stack } from "components/Stack/Stack"
import React from "react"

export const AuthSettingsPage: React.FC = () => {
const AuthSettingsPage: React.FC = () => {
const { deploymentFlags } = useDeploySettings()

return (
Expand Down Expand Up @@ -154,3 +154,5 @@ export const AuthSettingsPage: React.FC = () => {
</>
)
}

export default AuthSettingsPage
21 changes: 20 additions & 1 deletion site/src/pages/DeploySettingsPage/GeneralSettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
} from "components/DeploySettingsLayout/Option"
import React from "react"

export const GeneralSettingsPage: React.FC = () => {
const GeneralSettingsPage: React.FC = () => {
const { deploymentFlags } = useDeploySettings()

return (
Expand Down Expand Up @@ -46,6 +46,23 @@ export const GeneralSettingsPage: React.FC = () => {
</TableCell>
</TableRow>

<TableRow>
<TableCell>
<OptionName>
{deploymentFlags.address.name}
</OptionName>
<OptionDescription>
{deploymentFlags.address.description}
</OptionDescription>
</TableCell>

<TableCell>
<OptionValue>
{deploymentFlags.address.value}
</OptionValue>
</TableCell>
</TableRow>

<TableRow>
<TableCell>
<OptionName>
Expand All @@ -68,3 +85,5 @@ export const GeneralSettingsPage: React.FC = () => {
</>
)
}

export default GeneralSettingsPage
4 changes: 3 additions & 1 deletion site/src/pages/DeploySettingsPage/MetricsSettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
} from "components/DeploySettingsLayout/Option"
import React from "react"

export const MetricsSettingsPage: React.FC = () => {
const MetricsSettingsPage: React.FC = () => {
const { deploymentFlags } = useDeploySettings()

return (
Expand Down Expand Up @@ -61,3 +61,5 @@ export const MetricsSettingsPage: React.FC = () => {
</>
)
}

export default MetricsSettingsPage
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
} from "components/DeploySettingsLayout/Option"
import React from "react"

export const SecuritySettingsPage: React.FC = () => {
const SecuritySettingsPage: React.FC = () => {
const { deploymentFlags } = useDeploySettings()

return (
Expand Down Expand Up @@ -77,3 +77,5 @@ export const SecuritySettingsPage: React.FC = () => {
</>
)
}

export default SecuritySettingsPage
7 changes: 7 additions & 0 deletions site/src/xServices/auth/authXService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export const checks = {
createTemplates: "createTemplates",
deleteTemplates: "deleteTemplates",
viewAuditLog: "viewAuditLog",
viewDeploymentFlags: "viewDeploymentFlags",
createGroup: "createGroup",
} as const

Expand Down Expand Up @@ -56,6 +57,12 @@ export const permissionsToCheck = {
},
action: "read",
},
[checks.viewDeploymentFlags]: {
object: {
resource_type: "deployment_flags",
},
action: "read",
},
[checks.createGroup]: {
object: {
resource_type: "group",
Expand Down