|
1 | 1 | import { useSelector } from "@xstate/react"
|
| 2 | +import { FeatureNames } from "api/types" |
| 3 | +import { RequirePermission } from "components/RequirePermission/RequirePermission" |
2 | 4 | import { SetupPage } from "pages/SetupPage/SetupPage"
|
3 | 5 | import { TemplateSettingsPage } from "pages/TemplateSettingsPage/TemplateSettingsPage"
|
4 | 6 | import { FC, lazy, Suspense, useContext } from "react"
|
5 | 7 | import { Navigate, Route, Routes } from "react-router-dom"
|
6 | 8 | import { selectPermissions } from "xServices/auth/authSelectors"
|
| 9 | +import { selectFeatureVisibility } from "xServices/entitlements/entitlementsSelectors" |
7 | 10 | import { XServiceContext } from "xServices/StateContext"
|
8 | 11 | import { AuthAndFrame } from "./components/AuthAndFrame/AuthAndFrame"
|
9 | 12 | import { RequireAuth } from "./components/RequireAuth/RequireAuth"
|
@@ -35,6 +38,8 @@ const AuditPage = lazy(() => import("./pages/AuditPage/AuditPage"))
|
35 | 38 | export const AppRouter: FC = () => {
|
36 | 39 | const xServices = useContext(XServiceContext)
|
37 | 40 | const permissions = useSelector(xServices.authXService, selectPermissions)
|
| 41 | + const featureVisibility = useSelector(xServices.entitlementsXService, selectFeatureVisibility) |
| 42 | + |
38 | 43 | return (
|
39 | 44 | <Suspense fallback={<></>}>
|
40 | 45 | <Routes>
|
@@ -134,11 +139,13 @@ export const AppRouter: FC = () => {
|
134 | 139 | <Route
|
135 | 140 | index
|
136 | 141 | element={
|
137 |
| - process.env.NODE_ENV === "production" || !permissions?.viewAuditLog ? ( |
| 142 | + process.env.NODE_ENV === "production" ? ( |
138 | 143 | <Navigate to="/workspaces" />
|
139 | 144 | ) : (
|
140 | 145 | <AuthAndFrame>
|
141 |
| - <AuditPage /> |
| 146 | + <RequirePermission isFeatureVisible={featureVisibility[FeatureNames.AuditLog] && !!permissions?.viewAuditLog}> |
| 147 | + <AuditPage /> |
| 148 | + </RequirePermission> |
142 | 149 | </AuthAndFrame>
|
143 | 150 | )
|
144 | 151 | }
|
|
0 commit comments