Skip to content

Commit 3f2ef92

Browse files
committed
🐛 Fix migrator permissions
Signed-off-by: ibolton336 <[email protected]>
1 parent e99029b commit 3f2ef92

File tree

2 files changed

+123
-37
lines changed

2 files changed

+123
-37
lines changed

client/src/app/pages/applications/applications-table/applications-table.tsx

+82-36
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,16 @@ import keycloak from "@app/keycloak";
5858
import {
5959
RBAC,
6060
RBAC_TYPE,
61+
analysisReadScopes,
62+
analysisWriteScopes,
6163
applicationsWriteScopes,
64+
assessmentReadScopes,
65+
assessmentWriteScopes,
66+
credentialsWriteScopes,
67+
dependenciesWriteScopes,
6268
importsWriteScopes,
69+
reviewsReadScopes,
70+
reviewsWriteScopes,
6371
tasksReadScopes,
6472
tasksWriteScopes,
6573
} from "@app/rbac";
@@ -542,8 +550,16 @@ export const ApplicationsTable: React.FC = () => {
542550
const userScopes: string[] = token?.scope.split(" ") || [],
543551
importWriteAccess = checkAccess(userScopes, importsWriteScopes),
544552
applicationWriteAccess = checkAccess(userScopes, applicationsWriteScopes),
553+
assessmentWriteAccess = checkAccess(userScopes, assessmentWriteScopes),
554+
analysisWriteAccess = checkAccess(userScopes, analysisWriteScopes),
555+
assessmentReadAccess = checkAccess(userScopes, assessmentReadScopes),
556+
credentialsWriteAccess = checkAccess(userScopes, credentialsWriteScopes),
557+
dependenciesWriteAccess = checkAccess(userScopes, dependenciesWriteScopes),
558+
analysisReadAccess = checkAccess(userScopes, analysisReadScopes),
545559
tasksReadAccess = checkAccess(userScopes, tasksReadScopes),
546-
tasksWriteAccess = checkAccess(userScopes, tasksWriteScopes);
560+
tasksWriteAccess = checkAccess(userScopes, tasksWriteScopes),
561+
reviewsWriteAccess = checkAccess(userScopes, reviewsWriteScopes),
562+
reviewsReadAccess = checkAccess(userScopes, reviewsReadScopes);
547563

548564
const areAppsInWaves = selectedRows.some(
549565
(application) => application.migrationWave !== null
@@ -985,15 +1001,26 @@ export const ApplicationsTable: React.FC = () => {
9851001
<Td isActionCell id="row-actions">
9861002
<ActionsColumn
9871003
items={[
988-
{
989-
title: t("actions.assess"),
990-
onClick: () => assessSelectedApp(application),
991-
},
992-
{
993-
title: t("actions.review"),
994-
onClick: () => reviewSelectedApp(application),
995-
},
996-
...(application?.assessments?.length
1004+
...(assessmentWriteAccess
1005+
? [
1006+
{
1007+
title: t("actions.assess"),
1008+
onClick: () =>
1009+
assessSelectedApp(application),
1010+
},
1011+
]
1012+
: []),
1013+
...(reviewsWriteAccess
1014+
? [
1015+
{
1016+
title: t("actions.review"),
1017+
onClick: () =>
1018+
reviewSelectedApp(application),
1019+
},
1020+
]
1021+
: []),
1022+
...(application?.assessments?.length &&
1023+
assessmentWriteAccess
9971024
? [
9981025
{
9991026
title: t("actions.discardAssessment"),
@@ -1002,7 +1029,7 @@ export const ApplicationsTable: React.FC = () => {
10021029
},
10031030
]
10041031
: []),
1005-
...(application?.review
1032+
...(application?.review && reviewsWriteAccess
10061033
? [
10071034
{
10081035
title: t("actions.discardReview"),
@@ -1011,31 +1038,50 @@ export const ApplicationsTable: React.FC = () => {
10111038
},
10121039
]
10131040
: []),
1014-
{
1015-
title: t("actions.delete"),
1016-
onClick: () =>
1017-
setApplicationsToDelete([application]),
1018-
},
1019-
{
1020-
title: t("actions.manageDependencies"),
1021-
onClick: () =>
1022-
setApplicationDependenciesToManage(application),
1023-
},
1024-
{
1025-
title: t("actions.manageCredentials"),
1026-
onClick: () =>
1027-
setSaveApplicationsCredentialsModalState([
1028-
application,
1029-
]),
1030-
},
1031-
{
1032-
title: t("actions.analysisDetails"),
1033-
onClick: () =>
1034-
setTaskToView({
1035-
name: application.name,
1036-
task: getTask(application)?.id,
1037-
}),
1038-
},
1041+
...(applicationWriteAccess
1042+
? [
1043+
{
1044+
title: t("actions.delete"),
1045+
onClick: () =>
1046+
setApplicationsToDelete([application]),
1047+
},
1048+
]
1049+
: []),
1050+
...(dependenciesWriteAccess
1051+
? [
1052+
{
1053+
title: t("actions.manageDependencies"),
1054+
onClick: () =>
1055+
setApplicationDependenciesToManage(
1056+
application
1057+
),
1058+
},
1059+
]
1060+
: []),
1061+
1062+
...(credentialsWriteAccess
1063+
? [
1064+
{
1065+
title: t("actions.manageCredentials"),
1066+
onClick: () =>
1067+
setSaveApplicationsCredentialsModalState([
1068+
application,
1069+
]),
1070+
},
1071+
]
1072+
: []),
1073+
...(analysisReadAccess
1074+
? [
1075+
{
1076+
title: t("actions.analysisDetails"),
1077+
onClick: () =>
1078+
setTaskToView({
1079+
name: application.name,
1080+
task: getTask(application)?.id,
1081+
}),
1082+
},
1083+
]
1084+
: []),
10391085
...(isTaskCancellable(application) &&
10401086
tasksReadAccess &&
10411087
tasksWriteAccess

client/src/app/rbac.ts

+41-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export const RBAC = ({
2020
if (isAuthRequired) {
2121
const token = keycloak.tokenParsed || undefined;
2222
if (rbacType === RBAC_TYPE.Role) {
23-
let userRoles = token?.realm_access?.roles || [],
23+
const userRoles = token?.realm_access?.roles || [],
2424
access = checkAccess(userRoles, allowedPermissions);
2525
return access && children;
2626
} else if (rbacType === RBAC_TYPE.Scope) {
@@ -104,6 +104,32 @@ export const applicationsWriteScopes = [
104104
"applications:delete",
105105
];
106106

107+
export const analysisWriteScopes = [
108+
"applications.analysis:put",
109+
"applications.analysis:post",
110+
"applications.analysis:delete",
111+
"archetypes.analysis:put",
112+
"archetypes.analysis:post",
113+
"archetypes.analysis:delete",
114+
];
115+
export const analysisReadScopes = [
116+
"applications.analysis:get",
117+
"archetypes.analysis:get",
118+
];
119+
120+
export const assessmentWriteScopes = [
121+
"applications.assessments:put",
122+
"applications.assessments:post",
123+
"applications.assessments:delete",
124+
"archetypes.assessments:put",
125+
"archetypes.assessments:post",
126+
"archetypes.assessments:delete",
127+
];
128+
export const assessmentReadScopes = [
129+
"applications.assessments:get",
130+
"archetypes.assessments:get",
131+
];
132+
107133
export const modifiedPathfinderWriteScopes = [
108134
"assessments:put",
109135
"assessments:patch",
@@ -126,3 +152,17 @@ export const tasksWriteScopes = [
126152
"taskgroups:put",
127153
"taskgroups:delete",
128154
];
155+
156+
export const credentialsWriteScopes = [
157+
"identities:put",
158+
"identities:post",
159+
"identities:delete",
160+
];
161+
export const credentialsReadScopes = ["identities:get"];
162+
163+
export const reviewsWriteScopes = [
164+
"reviews:put",
165+
"reviews:post",
166+
"reviews:delete",
167+
];
168+
export const reviewsReadScopes = ["reviews:get"];

0 commit comments

Comments
 (0)