diff --git a/frontend/src/pages/UnstractAdministrationPage.jsx b/frontend/src/pages/UnstractAdministrationPage.jsx index 6fa07ea6aa..d85d890d8c 100644 --- a/frontend/src/pages/UnstractAdministrationPage.jsx +++ b/frontend/src/pages/UnstractAdministrationPage.jsx @@ -1,4 +1,5 @@ import "./UnstractAdministrationPage.css"; +import { useSessionStore } from "../store/session-store"; let UnstractAdministration; @@ -11,6 +12,28 @@ try { } function UnstractAdministrationPage() { + const { sessionDetails } = useSessionStore(); + + // Wait for session to load before making authorization decisions + if (!sessionDetails) { + return null; + } + + const isStaff = sessionDetails?.isStaff || sessionDetails?.is_staff; + const orgName = sessionDetails?.orgName; + const isOpenSource = orgName === "mock_org"; + + // Staff permission check - protects route at component level + if (!isStaff || isOpenSource) { + return ( +
+

Access Denied

+

This feature requires staff permissions.

+
+ ); + } + + // Cloud-only feature check if (!UnstractAdministration) { return (
@@ -19,6 +42,7 @@ function UnstractAdministrationPage() {
); } + return ; } diff --git a/frontend/src/routes/useMainAppRoutes.js b/frontend/src/routes/useMainAppRoutes.js index 494f89d3ec..d318a79622 100644 --- a/frontend/src/routes/useMainAppRoutes.js +++ b/frontend/src/routes/useMainAppRoutes.js @@ -6,7 +6,6 @@ import { ToolsSettingsPage } from "../pages/ToolsSettingsPage.jsx"; import { SettingsPage } from "../pages/SettingsPage.jsx"; import { PlatformSettings } from "../components/settings/platform/PlatformSettings.jsx"; import { RequireAdmin } from "../components/helpers/auth/RequireAdmin.js"; -import { useSessionStore } from "../store/session-store"; import { UsersPage } from "../pages/UsersPage.jsx"; import { InviteEditUserPage } from "../pages/InviteEditUserPage.jsx"; import { DefaultTriad } from "../components/settings/default-triad/DefaultTriad.jsx"; @@ -100,11 +99,6 @@ try { } function useMainAppRoutes() { - const { sessionDetails } = useSessionStore(); - const isStaff = sessionDetails?.isStaff || sessionDetails?.is_staff; - const orgName = sessionDetails?.orgName; - const isOpenSource = orgName === "mock_org"; - const routes = ( <> }> @@ -124,12 +118,10 @@ function useMainAppRoutes() { } /> )} - {isStaff && !isOpenSource && ( - } - /> - )} + } + /> } />