- {permissions.viewDeploymentValues && (
-
General
+ {permissions.viewDeploymentConfig && (
+
Overview
)}
{permissions.viewAllLicenses && (
Licenses
)}
- {permissions.editDeploymentValues && (
+ {permissions.editDeploymentConfig && (
Appearance
)}
- {permissions.viewDeploymentValues && (
+ {permissions.viewDeploymentConfig && (
User Authentication
)}
- {permissions.viewDeploymentValues && (
+ {permissions.viewDeploymentConfig && (
External Authentication
)}
{/* Not exposing this yet since token exchange is not finished yet.
-
+
OAuth2 Applications
*/}
- {permissions.viewDeploymentValues && (
+ {permissions.viewDeploymentConfig && (
Network
)}
{permissions.readWorkspaceProxies && (
@@ -63,10 +60,10 @@ export const DeploymentSidebarView: FC = ({
Workspace Proxies
)}
- {permissions.viewDeploymentValues && (
+ {permissions.viewDeploymentConfig && (
Security
)}
- {permissions.viewDeploymentValues && (
+ {permissions.viewDeploymentConfig && (
Observability
@@ -81,6 +78,11 @@ export const DeploymentSidebarView: FC
= ({
)}
+ {permissions.viewOrganizationIDPSyncSettings && (
+
+ IdP Organization Sync
+
+ )}
{permissions.viewNotificationTemplate && (
@@ -89,11 +91,6 @@ export const DeploymentSidebarView: FC = ({
)}
- {permissions.viewOrganizationIDPSyncSettings && (
-
- IdP Organization Sync
-
- )}
{!hasPremiumLicense && (
Premium
)}
diff --git a/site/src/modules/management/OrganizationSettingsLayout.tsx b/site/src/modules/management/OrganizationSettingsLayout.tsx
index ae1ce597641ae..00a435b82cd41 100644
--- a/site/src/modules/management/OrganizationSettingsLayout.tsx
+++ b/site/src/modules/management/OrganizationSettingsLayout.tsx
@@ -11,14 +11,14 @@ import {
} from "components/Breadcrumb/Breadcrumb";
import { Loader } from "components/Loader/Loader";
import { useDashboard } from "modules/dashboard/useDashboard";
+import {
+ type OrganizationPermissions,
+ canViewOrganization,
+} from "modules/permissions/organizations";
import NotFoundPage from "pages/404Page/404Page";
import { type FC, Suspense, createContext, useContext } from "react";
import { useQuery } from "react-query";
import { Outlet, useParams } from "react-router-dom";
-import {
- type OrganizationPermissions,
- canViewOrganization,
-} from "./organizationPermissions";
export const OrganizationSettingsContext = createContext<
OrganizationSettingsValue | undefined
@@ -46,7 +46,7 @@ export const useOrganizationSettings = (): OrganizationSettingsValue => {
};
const OrganizationSettingsLayout: FC = () => {
- const { organizations, showOrganizations } = useDashboard();
+ const { organizations } = useDashboard();
const { organization: orgName } = useParams() as {
organization?: string;
};
diff --git a/site/src/modules/management/OrganizationSidebarView.tsx b/site/src/modules/management/OrganizationSidebarView.tsx
index 71a37659ab14d..ff5617eaa495d 100644
--- a/site/src/modules/management/OrganizationSidebarView.tsx
+++ b/site/src/modules/management/OrganizationSidebarView.tsx
@@ -16,11 +16,11 @@ import {
PopoverTrigger,
} from "components/Popover/Popover";
import { SettingsSidebarNavItem } from "components/Sidebar/Sidebar";
-import type { Permissions } from "contexts/auth/permissions";
import { Check, ChevronDown, Plus } from "lucide-react";
+import type { Permissions } from "modules/permissions";
+import type { OrganizationPermissions } from "modules/permissions/organizations";
import { type FC, useState } from "react";
import { useNavigate } from "react-router-dom";
-import type { OrganizationPermissions } from "./organizationPermissions";
interface OrganizationsSettingsNavigationProps {
/** The organization selected from the dropdown */
diff --git a/site/src/contexts/auth/RequirePermission.tsx b/site/src/modules/permissions/RequirePermission.tsx
similarity index 100%
rename from site/src/contexts/auth/RequirePermission.tsx
rename to site/src/modules/permissions/RequirePermission.tsx
diff --git a/site/src/contexts/auth/permissions.tsx b/site/src/modules/permissions/index.ts
similarity index 91%
rename from site/src/contexts/auth/permissions.tsx
rename to site/src/modules/permissions/index.ts
index 0d8957627c36d..300edec9e52db 100644
--- a/site/src/contexts/auth/permissions.tsx
+++ b/site/src/modules/permissions/index.ts
@@ -30,7 +30,7 @@ export const permissionChecks = {
resource_type: "template",
any_org: true,
},
- action: "update",
+ action: "create",
},
updateTemplates: {
object: {
@@ -44,30 +44,18 @@ export const permissionChecks = {
},
action: "delete",
},
- viewDeploymentValues: {
+ viewDeploymentConfig: {
object: {
resource_type: "deployment_config",
},
action: "read",
},
- editDeploymentValues: {
+ editDeploymentConfig: {
object: {
resource_type: "deployment_config",
},
action: "update",
},
- viewUpdateCheck: {
- object: {
- resource_type: "deployment_config",
- },
- action: "read",
- },
- viewExternalAuthConfig: {
- object: {
- resource_type: "deployment_config",
- },
- action: "read",
- },
viewDeploymentStats: {
object: {
resource_type: "deployment_stats",
@@ -178,7 +166,7 @@ export const canViewDeploymentSettings = (
): permissions is Permissions => {
return (
permissions !== undefined &&
- (permissions.viewDeploymentValues ||
+ (permissions.viewDeploymentConfig ||
permissions.viewAllLicenses ||
permissions.viewAllUsers ||
permissions.viewAnyGroup ||
diff --git a/site/src/modules/management/organizationPermissions.tsx b/site/src/modules/permissions/organizations.ts
similarity index 100%
rename from site/src/modules/management/organizationPermissions.tsx
rename to site/src/modules/permissions/organizations.ts
diff --git a/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx
index 03908da7e3a78..88b90f7f8c1d0 100644
--- a/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx
+++ b/site/src/pages/DeploymentSettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPage.tsx
@@ -1,11 +1,11 @@
-import { useDeploymentSettings } from "modules/management/DeploymentSettingsProvider";
+import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { pageTitle } from "utils/page";
import { ExternalAuthSettingsPageView } from "./ExternalAuthSettingsPageView";
const ExternalAuthSettingsPage: FC = () => {
- const { deploymentConfig } = useDeploymentSettings();
+ const { deploymentConfig } = useDeploymentConfig();
return (
<>
diff --git a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx
index 78f6a08087d74..3a3d191e030be 100644
--- a/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx
+++ b/site/src/pages/DeploymentSettingsPage/LicensesSettingsPage/LicenseSeatConsumptionChart.tsx
@@ -108,7 +108,7 @@ export const LicenseSeatConsumptionChart: FC<
-
+
Daily user activity
diff --git a/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx
index cdbc3fb142ff1..7118560dca1bf 100644
--- a/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx
+++ b/site/src/pages/DeploymentSettingsPage/NetworkSettingsPage/NetworkSettingsPage.tsx
@@ -1,11 +1,11 @@
-import { useDeploymentSettings } from "modules/management/DeploymentSettingsProvider";
+import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { pageTitle } from "utils/page";
import { NetworkSettingsPageView } from "./NetworkSettingsPageView";
const NetworkSettingsPage: FC = () => {
- const { deploymentConfig } = useDeploymentSettings();
+ const { deploymentConfig } = useDeploymentConfig();
return (
<>
diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx
index 2e73e4c6a2b9b..1a38cd1de9c84 100644
--- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx
+++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/NotificationsPage.tsx
@@ -9,7 +9,7 @@ import { Loader } from "components/Loader/Loader";
import { SettingsHeader } from "components/SettingsHeader/SettingsHeader";
import { TabLink, Tabs, TabsList } from "components/Tabs/Tabs";
import { useSearchParamsKey } from "hooks/useSearchParamsKey";
-import { useDeploymentSettings } from "modules/management/DeploymentSettingsProvider";
+import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider";
import { castNotificationMethod } from "modules/notifications/utils";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
@@ -22,7 +22,7 @@ import { NotificationEvents } from "./NotificationEvents";
import { Troubleshooting } from "./Troubleshooting";
export const NotificationsPage: FC = () => {
- const { deploymentConfig } = useDeploymentSettings();
+ const { deploymentConfig } = useDeploymentConfig();
const [templatesByGroup, dispatchMethods] = useQueries({
queries: [
{
diff --git a/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts b/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts
index fc500efd847d6..0ceac24520e1a 100644
--- a/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts
+++ b/site/src/pages/DeploymentSettingsPage/NotificationsPage/storybookUtils.ts
@@ -194,7 +194,7 @@ export const baseMeta = {
},
],
user: MockUser,
- permissions: { viewDeploymentValues: true },
+ permissions: { viewDeploymentConfig: true },
deploymentOptions: mockNotificationsDeploymentOptions,
deploymentValues: {
notifications: {
diff --git a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx
index 12b574c177384..bce0a0d544709 100644
--- a/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx
+++ b/site/src/pages/DeploymentSettingsPage/ObservabilitySettingsPage/ObservabilitySettingsPage.tsx
@@ -1,13 +1,13 @@
import { useDashboard } from "modules/dashboard/useDashboard";
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
-import { useDeploymentSettings } from "modules/management/DeploymentSettingsProvider";
+import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { pageTitle } from "utils/page";
import { ObservabilitySettingsPageView } from "./ObservabilitySettingsPageView";
const ObservabilitySettingsPage: FC = () => {
- const { deploymentConfig } = useDeploymentSettings();
+ const { deploymentConfig } = useDeploymentConfig();
const { entitlements } = useDashboard();
const { multiple_organizations: hasPremiumLicense } = useFeatureVisibility();
diff --git a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/ChartSection.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/ChartSection.tsx
similarity index 100%
rename from site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/ChartSection.tsx
rename to site/src/pages/DeploymentSettingsPage/OverviewPage/ChartSection.tsx
diff --git a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPage.tsx
similarity index 73%
rename from site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx
rename to site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPage.tsx
index 32a9c3c971d78..fc15eca1ec4f1 100644
--- a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPage.tsx
+++ b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPage.tsx
@@ -1,15 +1,15 @@
import { deploymentDAUs } from "api/queries/deployment";
import { availableExperiments, experiments } from "api/queries/experiments";
import { useEmbeddedMetadata } from "hooks/useEmbeddedMetadata";
-import { useDeploymentSettings } from "modules/management/DeploymentSettingsProvider";
+import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { useQuery } from "react-query";
import { pageTitle } from "utils/page";
-import { GeneralSettingsPageView } from "./GeneralSettingsPageView";
+import { OverviewPageView } from "./OverviewPageView";
-const GeneralSettingsPage: FC = () => {
- const { deploymentConfig } = useDeploymentSettings();
+const OverviewPage: FC = () => {
+ const { deploymentConfig } = useDeploymentConfig();
const safeExperimentsQuery = useQuery(availableExperiments());
const { metadata } = useEmbeddedMetadata();
@@ -26,9 +26,9 @@ const GeneralSettingsPage: FC = () => {
return (
<>
- {pageTitle("General Settings")}
+ {pageTitle("Overview", "Deployment")}
- {
);
};
-export default GeneralSettingsPage;
+export default OverviewPage;
diff --git a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx
similarity index 91%
rename from site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx
rename to site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx
index 50b04bb64228e..b3398f8b1f204 100644
--- a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx
+++ b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.stories.tsx
@@ -1,10 +1,10 @@
import type { Meta, StoryObj } from "@storybook/react";
import { MockDeploymentDAUResponse } from "testHelpers/entities";
-import { GeneralSettingsPageView } from "./GeneralSettingsPageView";
+import { OverviewPageView } from "./OverviewPageView";
-const meta: Meta = {
- title: "pages/DeploymentSettingsPage/GeneralSettingsPageView",
- component: GeneralSettingsPageView,
+const meta: Meta = {
+ title: "pages/DeploymentSettingsPage/OverviewPageView",
+ component: OverviewPageView,
args: {
deploymentOptions: [
{
@@ -42,7 +42,7 @@ const meta: Meta = {
};
export default meta;
-type Story = StoryObj;
+type Story = StoryObj;
export const Page: Story = {};
diff --git a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.tsx
similarity index 94%
rename from site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx
rename to site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.tsx
index 57bb213457e9f..b3a72a7623082 100644
--- a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPageView.tsx
+++ b/site/src/pages/DeploymentSettingsPage/OverviewPage/OverviewPageView.tsx
@@ -14,14 +14,14 @@ import { Alert } from "../../../components/Alert/Alert";
import OptionsTable from "../OptionsTable";
import { UserEngagementChart } from "./UserEngagementChart";
-export type GeneralSettingsPageViewProps = {
+export type OverviewPageViewProps = {
deploymentOptions: SerpentOption[];
dailyActiveUsers: DAUsResponse | undefined;
readonly invalidExperiments: Experiments | string[];
readonly safeExperiments: Experiments | string[];
};
-export const GeneralSettingsPageView: FC = ({
+export const OverviewPageView: FC = ({
deploymentOptions,
dailyActiveUsers,
safeExperiments,
diff --git a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/UserEngagementChart.stories.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.stories.tsx
similarity index 100%
rename from site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/UserEngagementChart.stories.tsx
rename to site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.stories.tsx
diff --git a/site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/UserEngagementChart.tsx b/site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.tsx
similarity index 100%
rename from site/src/pages/DeploymentSettingsPage/GeneralSettingsPage/UserEngagementChart.tsx
rename to site/src/pages/DeploymentSettingsPage/OverviewPage/UserEngagementChart.tsx
diff --git a/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx
index 1ac3fb00c7569..981f35d34704a 100644
--- a/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx
+++ b/site/src/pages/DeploymentSettingsPage/SecuritySettingsPage/SecuritySettingsPage.tsx
@@ -1,12 +1,12 @@
import { useDashboard } from "modules/dashboard/useDashboard";
-import { useDeploymentSettings } from "modules/management/DeploymentSettingsProvider";
+import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { pageTitle } from "utils/page";
import { SecuritySettingsPageView } from "./SecuritySettingsPageView";
const SecuritySettingsPage: FC = () => {
- const { deploymentConfig } = useDeploymentSettings();
+ const { deploymentConfig } = useDeploymentConfig();
const { entitlements } = useDashboard();
return (
diff --git a/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx b/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx
index 1502fe0eab366..0f5d0269c8849 100644
--- a/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx
+++ b/site/src/pages/DeploymentSettingsPage/UserAuthSettingsPage/UserAuthSettingsPage.tsx
@@ -1,11 +1,11 @@
-import { useDeploymentSettings } from "modules/management/DeploymentSettingsProvider";
+import { useDeploymentConfig } from "modules/management/DeploymentConfigProvider";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { pageTitle } from "utils/page";
import { UserAuthSettingsPageView } from "./UserAuthSettingsPageView";
const UserAuthSettingsPage: FC = () => {
- const { deploymentConfig } = useDeploymentSettings();
+ const { deploymentConfig } = useDeploymentConfig();
return (
<>
diff --git a/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx b/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx
index 7cef9e8774b4c..a7f97cefa92f4 100644
--- a/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx
+++ b/site/src/pages/ExternalAuthPage/ExternalAuthPage.tsx
@@ -104,7 +104,7 @@ const ExternalAuthPage: FC = () => {
authenticated: false,
});
}}
- viewExternalAuthConfig={permissions.viewExternalAuthConfig}
+ viewExternalAuthConfig={permissions.viewDeploymentConfig}
deviceExchangeError={deviceExchangeError}
externalAuthDevice={externalAuthDeviceQuery.data}
/>
diff --git a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx
index cecfae677f4b9..3258461ea79bb 100644
--- a/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx
+++ b/site/src/pages/OrganizationSettingsPage/CreateOrganizationPage.tsx
@@ -1,8 +1,8 @@
import { createOrganization } from "api/queries/organizations";
import { displaySuccess } from "components/GlobalSnackbar/utils";
import { useAuthenticated } from "contexts/auth/RequireAuth";
-import { RequirePermission } from "contexts/auth/RequirePermission";
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
+import { RequirePermission } from "modules/permissions/RequirePermission";
import type { FC } from "react";
import { useMutation, useQueryClient } from "react-query";
import { useNavigate } from "react-router-dom";
diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx
index 43ae73598059e..0d702b400e69d 100644
--- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx
+++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CreateEditRolePage.tsx
@@ -8,8 +8,8 @@ import type { CustomRoleRequest } from "api/typesGenerated";
import { ErrorAlert } from "components/Alert/ErrorAlert";
import { displayError } from "components/GlobalSnackbar/utils";
import { Loader } from "components/Loader/Loader";
-import { RequirePermission } from "contexts/auth/RequirePermission";
import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout";
+import { RequirePermission } from "modules/permissions/RequirePermission";
import type { FC } from "react";
import { Helmet } from "react-helmet-async";
import { useMutation, useQuery, useQueryClient } from "react-query";
diff --git a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx
index 4e7b8c386120a..ca567fdce7836 100644
--- a/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx
+++ b/site/src/pages/OrganizationSettingsPage/CustomRolesPage/CustomRolesPage.tsx
@@ -6,9 +6,9 @@ import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
import { Loader } from "components/Loader/Loader";
import { SettingsHeader } from "components/SettingsHeader/SettingsHeader";
import { Stack } from "components/Stack/Stack";
-import { RequirePermission } from "contexts/auth/RequirePermission";
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout";
+import { RequirePermission } from "modules/permissions/RequirePermission";
import { type FC, useEffect, useState } from "react";
import { Helmet } from "react-helmet-async";
import { useMutation, useQuery, useQueryClient } from "react-query";
diff --git a/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx b/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx
index b862ad41dc883..d01c9d1cda29f 100644
--- a/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx
+++ b/site/src/pages/OrganizationSettingsPage/OrganizationRedirect.tsx
@@ -1,6 +1,6 @@
import { EmptyState } from "components/EmptyState/EmptyState";
import { useOrganizationSettings } from "modules/management/OrganizationSettingsLayout";
-import { canEditOrganization } from "modules/management/organizationPermissions";
+import { canEditOrganization } from "modules/permissions/organizations";
import type { FC } from "react";
import { Navigate } from "react-router-dom";
@@ -10,19 +10,25 @@ const OrganizationRedirect: FC = () => {
organizationPermissionsByOrganizationId: organizationPermissions,
} = useOrganizationSettings();
+ const sortedOrganizations = [...organizations].sort(
+ (a, b) => (b.is_default ? 1 : 0) - (a.is_default ? 1 : 0),
+ );
+
// Redirect /organizations => /organizations/some-organization-name
// If they can edit the default org, we should redirect to the default.
// If they cannot edit the default, we should redirect to the first org that
// they can edit.
- const editableOrg = [...organizations]
- .sort((a, b) => (b.is_default ? 1 : 0) - (a.is_default ? 1 : 0))
- .find((org) => canEditOrganization(organizationPermissions[org.id]));
+ const editableOrg = sortedOrganizations.find((org) =>
+ canEditOrganization(organizationPermissions[org.id]),
+ );
if (editableOrg) {
return ;
}
// If they cannot edit any org, just redirect to an org they can read.
- if (organizations.length > 0) {
- return ;
+ if (sortedOrganizations.length > 0) {
+ return (
+
+ );
}
return ;
};
diff --git a/site/src/pages/TerminalPage/TerminalPage.stories.tsx b/site/src/pages/TerminalPage/TerminalPage.stories.tsx
index f50b75bac4a26..4cf052668bb06 100644
--- a/site/src/pages/TerminalPage/TerminalPage.stories.tsx
+++ b/site/src/pages/TerminalPage/TerminalPage.stories.tsx
@@ -4,7 +4,7 @@ import { workspaceByOwnerAndNameKey } from "api/queries/workspaces";
import type { Workspace, WorkspaceAgentLifecycle } from "api/typesGenerated";
import { AuthProvider } from "contexts/auth/AuthProvider";
import { RequireAuth } from "contexts/auth/RequireAuth";
-import { permissionChecks } from "contexts/auth/permissions";
+import { permissionChecks } from "modules/permissions";
import {
reactRouterOutlet,
reactRouterParameters,
diff --git a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx
index 2d7509ac7d171..433045c625b17 100644
--- a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx
+++ b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.stories.tsx
@@ -40,7 +40,7 @@ const meta = {
},
],
user: MockUser,
- permissions: { viewDeploymentValues: true },
+ permissions: { viewDeploymentConfig: true },
},
decorators: [withGlobalSnackbar, withAuthProvider, withDashboardProvider],
} satisfies Meta;
@@ -74,7 +74,7 @@ export const ToggleNotification: Story = {
export const NonAdmin: Story = {
parameters: {
- permissions: { viewDeploymentValues: false },
+ permissions: { viewDeploymentConfig: false },
},
};
diff --git a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx
index d10a5c853e56a..6e7b9ac8ab8e0 100644
--- a/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx
+++ b/site/src/pages/UserSettingsPage/NotificationsPage/NotificationsPage.tsx
@@ -48,7 +48,7 @@ export const NotificationsPage: FC = () => {
...systemNotificationTemplates(),
select: (data: NotificationTemplate[]) => {
const groups = selectTemplatesByGroup(data);
- return permissions.viewDeploymentValues
+ return permissions.viewDeploymentConfig
? groups
: {
// Members only have access to the "Workspace Notifications" group
diff --git a/site/src/pages/UsersPage/UsersPage.stories.tsx b/site/src/pages/UsersPage/UsersPage.stories.tsx
index cd4a1cfc7e113..8a3c9bea5d013 100644
--- a/site/src/pages/UsersPage/UsersPage.stories.tsx
+++ b/site/src/pages/UsersPage/UsersPage.stories.tsx
@@ -63,7 +63,7 @@ const parameters = {
permissions: {
createUser: true,
updateUsers: true,
- viewDeploymentValues: true,
+ viewDeploymentConfig: true,
},
};
diff --git a/site/src/pages/UsersPage/UsersPage.tsx b/site/src/pages/UsersPage/UsersPage.tsx
index 81b7dfcb5ca71..9d2aaadefc96d 100644
--- a/site/src/pages/UsersPage/UsersPage.tsx
+++ b/site/src/pages/UsersPage/UsersPage.tsx
@@ -51,12 +51,12 @@ const UsersPage: FC = ({ defaultNewPassword }) => {
const {
createUser: canCreateUser,
updateUsers: canEditUsers,
- viewDeploymentValues,
+ viewDeploymentConfig,
} = permissions;
const rolesQuery = useQuery(roles());
const { data: deploymentValues } = useQuery({
...deploymentConfig(),
- enabled: viewDeploymentValues,
+ enabled: viewDeploymentConfig,
});
const usersQuery = usePaginatedQuery(paginatedUsers(searchParamsResult[0]));
@@ -94,7 +94,7 @@ const UsersPage: FC = ({ defaultNewPassword }) => {
// Indicates if oidc roles are synced from the oidc idp.
// Assign 'false' if unknown.
const oidcRoleSyncEnabled =
- viewDeploymentValues &&
+ viewDeploymentConfig &&
deploymentValues?.config.oidc?.user_role_field !== "";
const isLoading =
diff --git a/site/src/pages/WorkspacePage/Workspace.stories.tsx b/site/src/pages/WorkspacePage/Workspace.stories.tsx
index 9ff40eccaf12c..52d68d1dd0fd8 100644
--- a/site/src/pages/WorkspacePage/Workspace.stories.tsx
+++ b/site/src/pages/WorkspacePage/Workspace.stories.tsx
@@ -11,7 +11,7 @@ const permissions: WorkspacePermissions = {
readWorkspace: true,
updateWorkspace: true,
updateTemplate: true,
- viewDeploymentValues: true,
+ viewDeploymentConfig: true,
};
const meta: Meta = {
diff --git a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx
index 055c07a248f2c..6f02d925f6485 100644
--- a/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx
+++ b/site/src/pages/WorkspacePage/WorkspaceNotifications/WorkspaceNotifications.stories.tsx
@@ -15,7 +15,7 @@ const defaultPermissions = {
readWorkspace: true,
updateTemplate: true,
updateWorkspace: true,
- viewDeploymentValues: true,
+ viewDeploymentConfig: true,
};
const meta: Meta = {
diff --git a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx
index b3f4a76cd4b3d..e4329ecad78aa 100644
--- a/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx
+++ b/site/src/pages/WorkspacePage/WorkspaceReadyPage.tsx
@@ -66,7 +66,7 @@ export const WorkspaceReadyPage: FC = ({
// Debug mode
const { data: deploymentValues } = useQuery({
...deploymentConfig(),
- enabled: permissions.viewDeploymentValues,
+ enabled: permissions.viewDeploymentConfig,
});
// Build logs
diff --git a/site/src/pages/WorkspacePage/permissions.ts b/site/src/pages/WorkspacePage/permissions.ts
index dece7d03b3921..3ac1df5a3a7fd 100644
--- a/site/src/pages/WorkspacePage/permissions.ts
+++ b/site/src/pages/WorkspacePage/permissions.ts
@@ -25,7 +25,7 @@ export const workspaceChecks = (workspace: Workspace, template: Template) =>
},
action: "update",
},
- viewDeploymentValues: {
+ viewDeploymentConfig: {
object: {
resource_type: "deployment_config",
},
diff --git a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx
index abade141d5183..e94ccbbd86605 100644
--- a/site/src/pages/WorkspacesPage/WorkspacesPage.tsx
+++ b/site/src/pages/WorkspacesPage/WorkspacesPage.tsx
@@ -156,7 +156,7 @@ const useWorkspacesFilter = ({
});
const { permissions } = useAuthenticated();
- const canFilterByUser = permissions.viewDeploymentValues;
+ const canFilterByUser = permissions.viewDeploymentConfig;
const userMenu = useUserFilterMenu({
value: filter.values.owner,
onChange: (option) =>
diff --git a/site/src/router.tsx b/site/src/router.tsx
index ebb9e6763d058..06e3c0d6cf892 100644
--- a/site/src/router.tsx
+++ b/site/src/router.tsx
@@ -31,8 +31,8 @@ const NotFoundPage = lazy(() => import("./pages/404Page/404Page"));
const DeploymentSettingsLayout = lazy(
() => import("./modules/management/DeploymentSettingsLayout"),
);
-const DeploymentSettingsProvider = lazy(
- () => import("./modules/management/DeploymentSettingsProvider"),
+const DeploymentConfigProvider = lazy(
+ () => import("./modules/management/DeploymentConfigProvider"),
);
const OrganizationSidebarLayout = lazy(
() => import("./modules/management/OrganizationSidebarLayout"),
@@ -98,11 +98,8 @@ const TemplateSummaryPage = lazy(
const CreateWorkspacePage = lazy(
() => import("./pages/CreateWorkspacePage/CreateWorkspacePage"),
);
-const GeneralSettingsPage = lazy(
- () =>
- import(
- "./pages/DeploymentSettingsPage/GeneralSettingsPage/GeneralSettingsPage"
- ),
+const OverviewPage = lazy(
+ () => import("./pages/DeploymentSettingsPage/OverviewPage/OverviewPage"),
);
const SecuritySettingsPage = lazy(
() =>
@@ -435,8 +432,8 @@ export const router = createBrowserRouter(
}>
- }>
- } />
+ }>
+ } />
} />
{
organizationPermissions: MockOrganizationPermissions,
}}
>
-
-
+
);
};
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy