Skip to content

Commit b811cfc

Browse files
committed
chore: remove per-org audit links
For now at least, we will have the one audit page at /audit which lets you filter by organization. This also removes the need to do per-org audit permission checks.
1 parent 475f6e2 commit b811cfc

File tree

8 files changed

+20
-75
lines changed

8 files changed

+20
-75
lines changed

site/src/api/queries/organizations.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,9 @@ export const organizationsPermissions = (
179179
queryKey: ["organizations", "permissions"],
180180
queryFn: async () => {
181181
// Only request what we need for the sidebar, which is one edit permission
182-
// per sub-link (audit page, settings page, groups page, and members page)
183-
// that tells us whether to show that page, since we only show them if you
184-
// can edit (and not, at the moment if you can only view).
182+
// per sub-link (settings page, groups page, and members page) that tells
183+
// us whether to show that page, since we only show them if you can edit
184+
// (and not, at the moment if you can only view).
185185
const checks = (organizationId: string) => ({
186186
editMembers: {
187187
object: {
@@ -204,13 +204,6 @@ export const organizationsPermissions = (
204204
},
205205
action: "update",
206206
},
207-
auditOrganization: {
208-
object: {
209-
resource_type: "audit_log",
210-
organization_id: organizationId,
211-
},
212-
action: "read",
213-
},
214207
});
215208

216209
// The endpoint takes a flat array, so to avoid collisions prepend each

site/src/components/Filter/filter.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,6 @@ type FilterProps = {
142142
error?: unknown;
143143
options?: ReactNode;
144144
presets: PresetFilter[];
145-
/** Set to true if there is not much horizontal space. */
146-
compact?: boolean;
147145
};
148146

149147
export const Filter: FC<FilterProps> = ({
@@ -156,7 +154,6 @@ export const Filter: FC<FilterProps> = ({
156154
learnMoreLabel2,
157155
learnMoreLink2,
158156
presets,
159-
compact,
160157
}) => {
161158
const theme = useTheme();
162159
// Storing local copy of the filter query so that it can be updated more
@@ -187,12 +184,9 @@ export const Filter: FC<FilterProps> = ({
187184
display: "flex",
188185
gap: 8,
189186
marginBottom: 16,
190-
// For now compact just means immediately wrapping, but maybe we should
191-
// have a collapsible section or consolidate into one menu or something.
192-
// TODO: Remove separate compact mode once multi-org is stable.
193-
flexWrap: compact ? "wrap" : "nowrap",
187+
flexWrap: "nowrap",
194188

195-
[theme.breakpoints.down("md")]: {
189+
[theme.breakpoints.down("lg")]: {
196190
flexWrap: "wrap",
197191
},
198192
}}

site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,7 @@ const DeploymentDropdownContent: FC<DeploymentDropdownProps> = ({
124124
{canViewAuditLog && (
125125
<MenuItem
126126
component={NavLink}
127-
to={
128-
canViewOrganizations
129-
? `/deployment${linkToAuditing}`
130-
: linkToAuditing
131-
}
127+
to={linkToAuditing}
132128
css={styles.menuItem}
133129
onClick={onPopoverClose}
134130
>

site/src/pages/AuditPage/AuditFilter.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,23 +51,23 @@ interface AuditFilterProps {
5151
}
5252

5353
export const AuditFilter: FC<AuditFilterProps> = ({ filter, error, menus }) => {
54+
// Use a smaller width if including the organization filter.
55+
const width = menus.organization && 175;
5456
return (
5557
<Filter
5658
learnMoreLink={docs("/admin/audit-logs#filtering-logs")}
5759
presets={PRESET_FILTERS}
5860
isLoading={menus.user.isInitializing}
5961
filter={filter}
6062
error={error}
61-
// There is not much space with the sidebar and four filters, so in this
62-
// case we will use the compact mode.
63-
compact={Boolean(menus.organization)}
63+
breakpoint={menus.organization && "lg"}
6464
options={
6565
<>
66-
<ResourceTypeMenu menu={menus.resourceType} />
67-
<ActionMenu menu={menus.action} />
68-
<UserMenu menu={menus.user} />
66+
<ResourceTypeMenu width={width} menu={menus.resourceType} />
67+
<ActionMenu width={width} menu={menus.action} />
68+
<UserMenu width={width} menu={menus.user} />
6969
{menus.organization && (
70-
<OrganizationsMenu menu={menus.organization} />
70+
<OrganizationsMenu width={width} menu={menus.organization} />
7171
)}
7272
</>
7373
}

site/src/pages/AuditPage/AuditPage.tsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { FC } from "react";
22
import { Helmet } from "react-helmet-async";
3-
import { useSearchParams, Navigate, useLocation } from "react-router-dom";
3+
import { useSearchParams } from "react-router-dom";
44
import { paginatedAudits } from "api/queries/audits";
55
import { useFilter } from "components/Filter/filter";
66
import { useUserFilterMenu } from "components/Filter/UserFilter";
@@ -19,7 +19,6 @@ import { AuditPageView } from "./AuditPageView";
1919
const AuditPage: FC = () => {
2020
const feats = useFeatureVisibility();
2121
const { experiments } = useDashboard();
22-
const location = useLocation();
2322

2423
/**
2524
* There is an implicit link between auditsQuery and filter via the
@@ -71,14 +70,9 @@ const AuditPage: FC = () => {
7170
}),
7271
});
7372

74-
// TODO: Once multi-org is stable, we should place this redirect into the
75-
// router directly, if we still need to maintain it (for users who are
76-
// typing the old URL manually or have it bookmarked).
77-
const canViewOrganizations =
78-
feats.multiple_organizations && experiments.includes("multi-organization");
79-
if (canViewOrganizations && location.pathname !== "/deployment/audit") {
80-
return <Navigate to={`/deployment/audit${location.search}`} replace />;
81-
}
73+
// With the multi-organization experiment enabled, show extra organization
74+
// info and the organization filter dropdon.
75+
const canViewOrganizations = experiments.includes("multi-organization");
8276

8377
return (
8478
<>

site/src/pages/AuditPage/AuditPageView.tsx

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,8 @@ export const AuditPageView: FC<AuditPageViewProps> = ({
5757
const isEmpty = !isLoading && auditLogs?.length === 0;
5858

5959
return (
60-
<Margins
61-
css={{
62-
// When acting as a deployment settings page, there is already padding.
63-
// TODO: When multi-org is stable we should move this to the deployment
64-
// settings dir, use the standard header, and remove these margins.
65-
padding: showOrgDetails ? 0 : undefined,
66-
}}
67-
>
68-
<PageHeader
69-
css={{
70-
// When acting as a deployment settings page, there is already padding.
71-
paddingTop: showOrgDetails ? 0 : undefined,
72-
}}
73-
>
60+
<Margins>
61+
<PageHeader>
7462
<PageHeaderTitle>
7563
<Stack direction="row" spacing={1} alignItems="center">
7664
<span>{Language.title}</span>

site/src/pages/ManagementSettingsPage/SidebarView.tsx

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Sidebar as BaseSidebar } from "components/Sidebar/Sidebar";
1010
import { Stack } from "components/Stack/Stack";
1111
import { UserAvatar } from "components/UserAvatar/UserAvatar";
1212
import { type ClassName, useClassName } from "hooks/useClassName";
13-
import { linkToAuditing, linkToUsers, withFilter } from "modules/navigation";
13+
import { linkToUsers } from "modules/navigation";
1414

1515
interface SidebarProps {
1616
/** True if a settings page is being viewed. */
@@ -118,11 +118,6 @@ const DeploymentSettingsNavigation: FC<DeploymentSettingsNavigationProps> = (
118118
Users
119119
</SidebarNavSubItem>
120120
)}
121-
{props.permissions.viewAnyAuditLog && (
122-
<SidebarNavSubItem href={linkToAuditing.slice(1)}>
123-
Auditing
124-
</SidebarNavSubItem>
125-
)}
126121
</Stack>
127122
)}
128123
</div>
@@ -248,19 +243,6 @@ const OrganizationSettingsNavigation: FC<
248243
Groups
249244
</SidebarNavSubItem>
250245
)}
251-
{/* For now redirect to the site-wide audit page with the organization
252-
pre-filled into the filter. Based on user feedback we might want
253-
to serve a copy of the audit page or even delete this link. */}
254-
{props.permissions.auditOrganization && (
255-
<SidebarNavSubItem
256-
href={`/deployment${withFilter(
257-
linkToAuditing,
258-
`organization:${props.organization.name}`,
259-
)}`}
260-
>
261-
Auditing
262-
</SidebarNavSubItem>
263-
)}
264246
</Stack>
265247
)}
266248
</>

site/src/router.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@ export const router = createBrowserRouter(
376376
<Route index element={<OrganizationSettingsPage />} />
377377
<Route path="members" element={<OrganizationMembersPage />} />
378378
{groupsRouter()}
379-
<Route path="auditing" element={<></>} />
380379
</Route>
381380
</Route>
382381

@@ -410,7 +409,6 @@ export const router = createBrowserRouter(
410409
<Route path="users" element={<UsersPage />} />
411410
<Route path="users/create" element={<CreateUserPage />} />
412411
{groupsRouter()}
413-
<Route path="audit" element={<AuditPage />} />
414412
</Route>
415413

416414
<Route path="/settings" element={<UserSettingsLayout />}>

0 commit comments

Comments
 (0)