Skip to content

Commit 848815c

Browse files
committed
Check license for organizations
All the checks now require both the experiment and license. I also renamed the variable canViewOrganizations everywhere for consistency.
1 parent fd376ad commit 848815c

File tree

7 files changed

+37
-34
lines changed

7 files changed

+37
-34
lines changed

site/src/pages/AuditPage/AuditPage.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@ import {
1717
import { AuditPageView } from "./AuditPageView";
1818

1919
const AuditPage: FC = () => {
20-
const { audit_log: isAuditLogVisible } = useFeatureVisibility();
20+
const feats = useFeatureVisibility();
2121
const { experiments } = useDashboard();
2222
const location = useLocation();
23-
const isMultiOrg = experiments.includes("multi-organization");
2423

2524
/**
2625
* There is an implicit link between auditsQuery and filter via the
@@ -75,7 +74,9 @@ const AuditPage: FC = () => {
7574
// TODO: Once multi-org is stable, we should place this redirect into the
7675
// router directly, if we still need to maintain it (for users who are
7776
// typing the old URL manually or have it bookmarked).
78-
if (isMultiOrg && location.pathname !== "/deployment/audit") {
77+
const canViewOrganizations =
78+
feats.multiple_organizations && experiments.includes("multi-organization");
79+
if (canViewOrganizations && location.pathname !== "/deployment/audit") {
7980
return <Navigate to={`/deployment/audit${location.search}`} replace />;
8081
}
8182

@@ -88,18 +89,18 @@ const AuditPage: FC = () => {
8889
<AuditPageView
8990
auditLogs={auditsQuery.data?.audit_logs}
9091
isNonInitialPage={isNonInitialPage(searchParams)}
91-
isAuditLogVisible={isAuditLogVisible}
92+
isAuditLogVisible={feats.audit_log}
9293
auditsQuery={auditsQuery}
9394
error={auditsQuery.error}
94-
showOrgDetails={isMultiOrg}
95+
showOrgDetails={canViewOrganizations}
9596
filterProps={{
9697
filter,
9798
error: auditsQuery.error,
9899
menus: {
99100
user: userMenu,
100101
action: actionMenu,
101102
resourceType: resourceTypeMenu,
102-
organization: isMultiOrg ? organizationsMenu : undefined,
103+
organization: canViewOrganizations ? organizationsMenu : undefined,
103104
},
104105
}}
105106
/>

site/src/pages/DeploySettingsPage/DeploySettingsLayout.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { Stack } from "components/Stack/Stack";
99
import { useAuthenticated } from "contexts/auth/RequireAuth";
1010
import { RequirePermission } from "contexts/auth/RequirePermission";
1111
import { useDashboard } from "modules/dashboard/useDashboard";
12+
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
1213
import { ManagementSettingsLayout } from "pages/ManagementSettingsPage/ManagementSettingsLayout";
1314
import { Sidebar } from "./Sidebar";
1415

@@ -33,9 +34,11 @@ export const useDeploySettings = (): DeploySettingsContextValue => {
3334
export const DeploySettingsLayout: FC = () => {
3435
const { experiments } = useDashboard();
3536

36-
const multiOrgExperimentEnabled = experiments.includes("multi-organization");
37+
const feats = useFeatureVisibility();
38+
const canViewOrganizations =
39+
feats.multiple_organizations && experiments.includes("multi-organization");
3740

38-
return multiOrgExperimentEnabled ? (
41+
return canViewOrganizations ? (
3942
<ManagementSettingsLayout />
4043
) : (
4144
<DeploySettingsLayoutInner />

site/src/pages/ManagementSettingsPage/GroupsPage/GroupsPage.tsx

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@ import GroupsPageView from "./GroupsPageView";
2424
export const GroupsPage: FC = () => {
2525
const { permissions } = useAuthenticated();
2626
const { createGroup: canCreateGroup } = permissions;
27-
const {
28-
multiple_organizations: organizationsEnabled,
29-
template_rbac: isTemplateRBACEnabled,
30-
} = useFeatureVisibility();
27+
const feats = useFeatureVisibility();
3128
const { experiments } = useDashboard();
3229
const location = useLocation();
3330
const { organization = "default" } = useParams() as { organization: string };
@@ -42,11 +39,9 @@ export const GroupsPage: FC = () => {
4239
}
4340
}, [groupsQuery.error]);
4441

45-
if (
46-
organizationsEnabled &&
47-
experiments.includes("multi-organization") &&
48-
location.pathname === "/deployment/groups"
49-
) {
42+
const canViewOrganizations =
43+
feats.multiple_organizations && experiments.includes("multi-organization");
44+
if (canViewOrganizations && location.pathname === "/deployment/groups") {
5045
const defaultName =
5146
getOrganizationNameByDefault(organizations) ?? "default";
5247
return <Navigate to={`/organizations/${defaultName}/groups`} replace />;
@@ -61,7 +56,7 @@ export const GroupsPage: FC = () => {
6156
<PageHeader
6257
actions={
6358
<>
64-
{canCreateGroup && isTemplateRBACEnabled && (
59+
{canCreateGroup && feats.template_rbac && (
6560
<Button
6661
component={RouterLink}
6762
startIcon={<GroupAdd />}
@@ -79,7 +74,7 @@ export const GroupsPage: FC = () => {
7974
<GroupsPageView
8075
groups={groupsQuery.data}
8176
canCreateGroup={canCreateGroup}
82-
isTemplateRBACEnabled={isTemplateRBACEnabled}
77+
isTemplateRBACEnabled={feats.template_rbac}
8378
/>
8479
</>
8580
);

site/src/pages/ManagementSettingsPage/ManagementSettingsLayout.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Stack } from "components/Stack/Stack";
1010
import { useAuthenticated } from "contexts/auth/RequireAuth";
1111
import { RequirePermission } from "contexts/auth/RequirePermission";
1212
import { useDashboard } from "modules/dashboard/useDashboard";
13+
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
1314
import NotFoundPage from "pages/404Page/404Page";
1415
import { DeploySettingsContext } from "../DeploySettingsPage/DeploySettingsLayout";
1516
import { Sidebar } from "./Sidebar";
@@ -35,12 +36,14 @@ export const useOrganizationSettings = (): OrganizationSettingsContextValue => {
3536
export const ManagementSettingsLayout: FC = () => {
3637
const { permissions } = useAuthenticated();
3738
const { experiments } = useDashboard();
39+
const feats = useFeatureVisibility();
3840
const deploymentConfigQuery = useQuery(deploymentConfig());
3941
const organizationsQuery = useQuery(organizations());
4042

41-
const multiOrgExperimentEnabled = experiments.includes("multi-organization");
43+
const canViewOrganizations =
44+
feats.multiple_organizations && experiments.includes("multi-organization");
4245

43-
if (!multiOrgExperimentEnabled) {
46+
if (!canViewOrganizations) {
4447
return <NotFoundPage />;
4548
}
4649

site/src/pages/UsersPage/UsersLayout.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ export const UsersLayout: FC = () => {
2323
const { createUser: canCreateUser, createGroup: canCreateGroup } =
2424
permissions;
2525
const navigate = useNavigate();
26-
const { template_rbac: isTemplateRBACEnabled } = useFeatureVisibility();
26+
const feats = useFeatureVisibility();
2727
const location = useLocation();
2828
const activeTab = location.pathname.endsWith("groups") ? "groups" : "users";
2929

30-
const isMultiOrg = experiments.includes("multi-organization");
30+
const canViewOrganizations =
31+
feats.multiple_organizations && experiments.includes("multi-organization");
3132

3233
return (
3334
<>
@@ -45,7 +46,7 @@ export const UsersLayout: FC = () => {
4546
Create user
4647
</Button>
4748
)}
48-
{canCreateGroup && isTemplateRBACEnabled && (
49+
{canCreateGroup && feats.template_rbac && (
4950
<Button
5051
component={RouterLink}
5152
startIcon={<GroupAdd />}
@@ -61,7 +62,7 @@ export const UsersLayout: FC = () => {
6162
</PageHeader>
6263
</Margins>
6364

64-
{!isMultiOrg && (
65+
{!canViewOrganizations && (
6566
<Tabs
6667
css={{ marginBottom: 40, marginTop: -TAB_PADDING_Y }}
6768
active={activeTab}

site/src/pages/UsersPage/UsersPage.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { isNonInitialPage } from "components/PaginationWidget/utils";
2929
import { useAuthenticated } from "contexts/auth/RequireAuth";
3030
import { usePaginatedQuery } from "hooks/usePaginatedQuery";
3131
import { useDashboard } from "modules/dashboard/useDashboard";
32+
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
3233
import { pageTitle } from "utils/page";
3334
import { generateRandomString } from "utils/random";
3435
import { ResetPasswordDialog } from "./ResetPasswordDialog";
@@ -42,7 +43,7 @@ const UsersPage: FC = () => {
4243
const searchParamsResult = useSearchParams();
4344
const { entitlements, experiments, organizationId } = useDashboard();
4445
const [searchParams] = searchParamsResult;
45-
const isMultiOrg = experiments.includes("multi-organization");
46+
const feats = useFeatureVisibility();
4647

4748
const groupsByUserIdQuery = useQuery(groupsByUserId(organizationId));
4849
const authMethodsQuery = useQuery(authMethods());
@@ -103,10 +104,9 @@ const UsersPage: FC = () => {
103104
authMethodsQuery.isLoading ||
104105
groupsByUserIdQuery.isLoading;
105106

106-
if (
107-
experiments.includes("multi-organization") &&
108-
location.pathname !== "/deployment/users"
109-
) {
107+
const canViewOrganizations =
108+
feats.multiple_organizations && experiments.includes("multi-organization");
109+
if (canViewOrganizations && location.pathname !== "/deployment/users") {
110110
return <Navigate to={`/deployment/users${location.search}`} replace />;
111111
}
112112

@@ -164,7 +164,7 @@ const UsersPage: FC = () => {
164164
menus: { status: statusMenu },
165165
}}
166166
usersQuery={usersQuery}
167-
isMultiOrg={isMultiOrg}
167+
canViewOrganizations={canViewOrganizations}
168168
canCreateUser={canCreateUser}
169169
/>
170170

site/src/pages/UsersPage/UsersPageView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export interface UsersPageViewProps {
3838
usersQuery: PaginationResult;
3939

4040
// TODO: Refactor these out once we remove the multi-organization experiment.
41-
isMultiOrg?: boolean;
41+
canViewOrganizations?: boolean;
4242
canCreateUser?: boolean;
4343
}
4444

@@ -63,14 +63,14 @@ export const UsersPageView: FC<UsersPageViewProps> = ({
6363
authMethods,
6464
groupsByUserId,
6565
usersQuery,
66-
isMultiOrg,
66+
canViewOrganizations,
6767
canCreateUser,
6868
}) => {
6969
const navigate = useNavigate();
7070

7171
return (
7272
<>
73-
{isMultiOrg && (
73+
{canViewOrganizations && (
7474
<PageHeader
7575
css={{ paddingTop: 0 }}
7676
actions={

0 commit comments

Comments
 (0)