Skip to content

Commit 5e20351

Browse files
committed
chore: rename access matrix to access overview
1 parent dadda7b commit 5e20351

File tree

10 files changed

+60
-59
lines changed

10 files changed

+60
-59
lines changed

frontend/src/component/admin/users/AccessMatrix/AccessMatrix.tsx frontend/src/component/admin/users/AccessOverview/AccessOverview.tsx

+11-11
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import { PageContent } from 'component/common/PageContent/PageContent';
22
import { PageHeader } from 'component/common/PageHeader/PageHeader';
33
import { useRequiredPathParam } from 'hooks/useRequiredPathParam';
44
import useUserInfo from 'hooks/api/getters/useUserInfo/useUserInfo';
5-
import { PermissionsTable } from './PermissionsTable';
5+
import { AccessOverviewTable } from './AccessOverviewTable';
66
import { styled, useMediaQuery } from '@mui/material';
77
import { useEffect, useState } from 'react';
88
import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments';
99
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
1010
import theme from 'themes/theme';
1111
import { StringParam, useQueryParams } from 'use-query-params';
1212
import useProjects from 'hooks/api/getters/useProjects/useProjects';
13-
import { AccessMatrixSelect } from './AccessMatrixSelect';
14-
import { useUserAccessMatrix } from 'hooks/api/getters/useUserAccessMatrix/useUserAccessMatrix';
13+
import { AccessOverviewSelect } from './AccessOverviewSelect';
14+
import { useUserAccessOverview } from 'hooks/api/getters/useUserAccessOverview/useUserAccessOverview';
1515

1616
const StyledActionsContainer = styled('div')(({ theme }) => ({
1717
display: 'flex',
@@ -28,7 +28,7 @@ const StyledTitle = styled('h2')(({ theme }) => ({
2828
margin: theme.spacing(2, 0),
2929
}));
3030

31-
export const AccessMatrix = () => {
31+
export const AccessOverview = () => {
3232
const id = useRequiredPathParam('id');
3333
const [query, setQuery] = useQueryParams({
3434
project: StringParam,
@@ -45,7 +45,7 @@ export const AccessMatrix = () => {
4545
query.environment ?? undefined,
4646
);
4747

48-
const { matrix, rootRole, projectRoles } = useUserAccessMatrix(
48+
const { overview, rootRole, projectRoles } = useUserAccessOverview(
4949
id,
5050
project,
5151
environment,
@@ -63,14 +63,14 @@ export const AccessMatrix = () => {
6363

6464
const AccessActions = (
6565
<StyledActionsContainer>
66-
<AccessMatrixSelect
66+
<AccessOverviewSelect
6767
label='Project'
6868
options={projects}
6969
getOptionLabel={(option) => option?.name ?? ''}
7070
value={projects.find(({ id }) => id === project)}
7171
setValue={(value) => setProject(value?.id ?? '')}
7272
/>
73-
<AccessMatrixSelect
73+
<AccessOverviewSelect
7474
label='Environment'
7575
options={environments}
7676
getOptionLabel={(option) =>
@@ -89,7 +89,7 @@ export const AccessMatrix = () => {
8989
isLoading={loading}
9090
header={
9191
<PageHeader
92-
title={`Access for ${user.name ?? user.username}`}
92+
title={`Access overview for ${user.name ?? user.username}`}
9393
actions={
9494
<ConditionallyRender
9595
condition={!isSmallScreen}
@@ -107,16 +107,16 @@ export const AccessMatrix = () => {
107107
<StyledTitle>
108108
Root permissions for role {rootRole?.name}
109109
</StyledTitle>
110-
<PermissionsTable permissions={matrix?.root ?? []} />
110+
<AccessOverviewTable permissions={overview?.root ?? []} />
111111
<StyledTitle>
112112
Project permissions for project {project} with project roles [
113113
{projectRoles?.map((role: any) => role.name).join(', ')}]
114114
</StyledTitle>
115-
<PermissionsTable permissions={matrix?.project ?? []} />
115+
<AccessOverviewTable permissions={overview?.project ?? []} />
116116
<StyledTitle>
117117
Environment permissions for environment {environment}
118118
</StyledTitle>
119-
<PermissionsTable permissions={matrix?.environment ?? []} />
119+
<AccessOverviewTable permissions={overview?.environment ?? []} />
120120
</PageContent>
121121
);
122122
};

frontend/src/component/admin/users/AccessMatrix/AccessMatrixSelect.tsx frontend/src/component/admin/users/AccessOverview/AccessOverviewSelect.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import { Autocomplete, type AutocompleteProps, TextField } from '@mui/material';
22

3-
interface IAccessMatrixSelectProps<T>
3+
interface IAccessOverviewSelectProps<T>
44
extends Partial<AutocompleteProps<T, false, false, false>> {
55
label: string;
66
options: T[];
77
value: T;
88
setValue: (role: T | null) => void;
99
}
1010

11-
export const AccessMatrixSelect = <T,>({
11+
export const AccessOverviewSelect = <T,>({
1212
label,
1313
options,
1414
value,
1515
setValue,
1616
...rest
17-
}: IAccessMatrixSelectProps<T>) => (
17+
}: IAccessOverviewSelectProps<T>) => (
1818
<Autocomplete
1919
options={options}
2020
value={value}

frontend/src/component/admin/users/AccessMatrix/PermissionsTable.tsx frontend/src/component/admin/users/AccessOverview/AccessOverviewTable.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import { IconCell } from 'component/common/Table/cells/IconCell/IconCell';
77
import Check from '@mui/icons-material/Check';
88
import Close from '@mui/icons-material/Close';
99
import { Box } from '@mui/material';
10-
import type { IMatrixPermission } from 'interfaces/permissions';
10+
import type { IAccessOverviewPermission } from 'interfaces/permissions';
1111

12-
export const PermissionsTable = ({
12+
export const AccessOverviewTable = ({
1313
permissions,
1414
}: {
15-
permissions: IMatrixPermission[];
15+
permissions: IAccessOverviewPermission[];
1616
}) => {
1717
const columns = useMemo(
1818
() => [

frontend/src/component/admin/users/UsersAdmin.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Route, Routes } from 'react-router-dom';
55
import EditUser from './EditUser/EditUser';
66
import NotFound from 'component/common/NotFound/NotFound';
77
import { InactiveUsersList } from './InactiveUsersList/InactiveUsersList';
8-
import { AccessMatrix } from './AccessMatrix/AccessMatrix';
8+
import { AccessOverview } from './AccessOverview/AccessOverview';
99
import { PremiumFeature } from '../../common/PremiumFeature/PremiumFeature';
1010
import { ConditionallyRender } from '../../common/ConditionallyRender/ConditionallyRender';
1111
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
@@ -25,7 +25,7 @@ export const UsersAdmin = () => {
2525
}
2626
/>
2727
<Route path=':id/edit' element={<EditUser />} />
28-
<Route path=':id/access' element={<AccessMatrix />} />
28+
<Route path=':id/access' element={<AccessOverview />} />
2929
<Route
3030
path='inactive'
3131
element={

frontend/src/component/project/Project/ProjectSettings/ProjectActions/ProjectActionsTable/ProjectActionsModal/ProjectActionsForm/ProjectActionsFormStep/ProjectActionsFormStepActions/ProjectActionsActionItem.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useRequiredPathParam } from 'hooks/useRequiredPathParam';
44
import type { ActionsActionState } from '../../useProjectActionsForm';
55
import { ProjectActionsFormItem } from '../ProjectActionsFormItem';
66
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
7-
import { useServiceAccountAccessMatrix } from 'hooks/api/getters/useServiceAccountAccessMatrix/useServiceAccountAccessMatrix';
7+
import { useServiceAccountAccessOverview } from 'hooks/api/getters/useServiceAccountAccessOverview/useServiceAccountAccessOverview';
88
import { useEffect, useMemo } from 'react';
99
import { ProjectActionsActionParameter } from './ProjectActionsActionParameter/ProjectActionsActionParameter';
1010
import type { ActionConfigurations } from 'interfaces/action';
@@ -51,7 +51,7 @@ export const ProjectActionsActionItem = ({
5151
}: IProjectActionsItemProps) => {
5252
const { action: actionName, executionParams, error } = action;
5353
const projectId = useRequiredPathParam('projectId');
54-
const { permissions } = useServiceAccountAccessMatrix(
54+
const { permissions } = useServiceAccountAccessOverview(
5555
actorId,
5656
projectId,
5757
executionParams.environment as string,

frontend/src/hooks/api/getters/useServiceAccountAccessMatrix/useServiceAccountAccessMatrix.ts frontend/src/hooks/api/getters/useServiceAccountAccessOverview/useServiceAccountAccessOverview.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,49 @@ import { formatApiPath } from 'utils/formatPath';
33
import handleErrorResponses from '../httpErrorResponseHandler';
44
import type { IRole } from 'interfaces/role';
55
import type { IServiceAccount } from 'interfaces/service-account';
6-
import type { IMatrixPermission } from 'interfaces/permissions';
6+
import type { IAccessOverviewPermission } from 'interfaces/permissions';
77
import type { IPermission } from 'interfaces/user';
88
import { useConditionalSWR } from '../useConditionalSWR/useConditionalSWR';
99

10-
interface IServiceAccountAccessMatrix {
11-
root: IMatrixPermission[];
12-
project: IMatrixPermission[];
13-
environment: IMatrixPermission[];
10+
interface IServiceAccountAccessOverview {
11+
root: IAccessOverviewPermission[];
12+
project: IAccessOverviewPermission[];
13+
environment: IAccessOverviewPermission[];
1414
}
1515

16-
interface IServiceAccountAccessMatrixResponse {
17-
matrix: IServiceAccountAccessMatrix;
16+
interface IServiceAccountAccessOverviewResponse {
17+
overview: IServiceAccountAccessOverview;
1818
projectRoles: IRole[];
1919
rootRole: IRole;
2020
serviceAccount: IServiceAccount;
2121
permissions: IPermission[];
2222
}
2323

24-
interface IServiceAccountAccessMatrixOutput
25-
extends Partial<IServiceAccountAccessMatrixResponse> {
24+
interface IServiceAccountAccessOverviewOutput
25+
extends Partial<IServiceAccountAccessOverviewResponse> {
2626
permissions: IPermission[];
2727
loading: boolean;
2828
refetch: () => void;
2929
error?: Error;
3030
}
3131

32-
export const useServiceAccountAccessMatrix = (
32+
export const useServiceAccountAccessOverview = (
3333
id?: number,
3434
project?: string,
3535
environment?: string,
36-
): IServiceAccountAccessMatrixOutput => {
36+
): IServiceAccountAccessOverviewOutput => {
3737
const queryParams = `${project ? `?project=${project}` : ''}${
3838
environment ? `${project ? '&' : '?'}environment=${environment}` : ''
3939
}`;
4040
const url = `api/admin/service-account/${id}/permissions${queryParams}`;
4141

4242
const { data, error, mutate } = useConditionalSWR<
43-
IServiceAccountAccessMatrixResponse | undefined
43+
IServiceAccountAccessOverviewResponse | undefined
4444
>(Boolean(id), undefined, formatApiPath(url), fetcher);
4545

4646
return useMemo(
4747
() => ({
48-
matrix: data?.matrix,
48+
overview: data?.overview,
4949
projectRoles: data?.projectRoles,
5050
rootRole: data?.rootRole,
5151
serviceAccount: data?.serviceAccount,
@@ -60,6 +60,6 @@ export const useServiceAccountAccessMatrix = (
6060

6161
const fetcher = (path: string) => {
6262
return fetch(path)
63-
.then(handleErrorResponses('Service account access matrix'))
63+
.then(handleErrorResponses('Service account access overview'))
6464
.then((res) => res.json());
6565
};

frontend/src/hooks/api/getters/useUserAccessMatrix/useUserAccessMatrix.ts frontend/src/hooks/api/getters/useUserAccessOverview/useUserAccessOverview.ts

+13-12
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,46 @@ import handleErrorResponses from '../httpErrorResponseHandler';
44
import useSWR from 'swr';
55
import type { IRole } from 'interfaces/role';
66
import type { IUser } from 'interfaces/user';
7-
import type { IMatrixPermission } from 'interfaces/permissions';
7+
import type { IAccessOverviewPermission } from 'interfaces/permissions';
88

9-
interface IUserAccessMatrix {
10-
root: IMatrixPermission[];
11-
project: IMatrixPermission[];
12-
environment: IMatrixPermission[];
9+
interface IUserAccessOverview {
10+
root: IAccessOverviewPermission[];
11+
project: IAccessOverviewPermission[];
12+
environment: IAccessOverviewPermission[];
1313
}
1414

15-
interface IUserAccessMatrixResponse {
16-
matrix: IUserAccessMatrix;
15+
interface IUserAccessOverviewResponse {
16+
overview: IUserAccessOverview;
1717
projectRoles: IRole[];
1818
rootRole: IRole;
1919
user: IUser;
2020
}
2121

22-
interface IUserAccessMatrixOutput extends Partial<IUserAccessMatrixResponse> {
22+
interface IUserAccessOverviewOutput
23+
extends Partial<IUserAccessOverviewResponse> {
2324
loading: boolean;
2425
refetch: () => void;
2526
error?: Error;
2627
}
2728

28-
export const useUserAccessMatrix = (
29+
export const useUserAccessOverview = (
2930
id: string,
3031
project?: string,
3132
environment?: string,
32-
): IUserAccessMatrixOutput => {
33+
): IUserAccessOverviewOutput => {
3334
const queryParams = `${project ? `?project=${project}` : ''}${
3435
environment ? `${project ? '&' : '?'}environment=${environment}` : ''
3536
}`;
3637
const url = `api/admin/user-admin/${id}/permissions${queryParams}`;
3738

38-
const { data, error, mutate } = useSWR<IUserAccessMatrixResponse>(
39+
const { data, error, mutate } = useSWR<IUserAccessOverviewResponse>(
3940
formatApiPath(url),
4041
fetcher,
4142
);
4243

4344
return useMemo(
4445
() => ({
45-
matrix: data?.matrix,
46+
overview: data?.overview,
4647
projectRoles: data?.projectRoles,
4748
rootRole: data?.rootRole,
4849
user: data?.user,

frontend/src/interfaces/permissions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ export interface IPermissionCategory {
3737
permissions: IPermission[];
3838
}
3939

40-
export interface IMatrixPermission extends IPermission {
40+
export interface IAccessOverviewPermission extends IPermission {
4141
hasPermission: boolean;
4242
}

src/lib/routes/admin-api/user-admin.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -741,15 +741,15 @@ export default class UserAdminController extends Controller {
741741
),
742742
);
743743
}
744-
const matrix = await this.accessService.permissionsMatrixForUser(
744+
const overview = await this.accessService.getAccessOverviewForUser(
745745
user,
746746
project,
747747
environment,
748748
);
749749

750750
// TODO add response validation based on the schema
751751
res.status(200).json({
752-
matrix,
752+
overview,
753753
user,
754754
rootRole,
755755
projectRoles,

src/lib/services/access-service.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ const PROJECT_ADMIN = [
6363
export type IdPermissionRef = Pick<IPermission, 'id' | 'environment'>;
6464
export type NamePermissionRef = Pick<IPermission, 'name' | 'environment'>;
6565
export type PermissionRef = IdPermissionRef | NamePermissionRef;
66-
type MatrixPermission = IPermission & {
66+
type AccessOverviewPermission = IPermission & {
6767
hasPermission: boolean;
6868
};
69-
type PermissionMatrix = {
70-
root: MatrixPermission[];
71-
project: MatrixPermission[];
72-
environment: MatrixPermission[];
69+
type AccessOverview = {
70+
root: AccessOverviewPermission[];
71+
project: AccessOverviewPermission[];
72+
environment: AccessOverviewPermission[];
7373
};
7474

7575
type APIUser = Pick<IUser, 'id' | 'permissions'> & { isAPI: true };
@@ -244,14 +244,14 @@ export class AccessService {
244244
* Provided a project, project permissions will be checked against that project.
245245
* Provided an environment, environment permissions will be checked against that environment (and project).
246246
*/
247-
async permissionsMatrixForUser(
247+
async getAccessOverviewForUser(
248248
user: APIUser | NonAPIUser,
249249
projectId?: string,
250250
environment?: string,
251-
): Promise<PermissionMatrix> {
251+
): Promise<AccessOverview> {
252252
const permissions = await this.getPermissions();
253253
const userP = await this.getPermissionsForUser(user);
254-
const matrix: PermissionMatrix = {
254+
const overview: AccessOverview = {
255255
root: permissions.root.map((p) => ({
256256
...p,
257257
hasPermission: this.meetsAllPermissions(userP, [p.name]),
@@ -278,7 +278,7 @@ export class AccessService {
278278
})) ?? [],
279279
};
280280

281-
return matrix;
281+
return overview;
282282
}
283283

284284
async getPermissionsForUser(

0 commit comments

Comments
 (0)