Skip to content

Commit 7c6accc

Browse files
pkp/pkp-lib#10769 Permission logic improvements to be consistent with 3.4
1 parent 9f72abc commit 7c6accc

6 files changed

+131
-55
lines changed

src/pages/workflow/composables/useWorkflowConfig/workflowConfigAuthorOJS.js

+26
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,32 @@ export const WorkflowConfig = {
8484
items,
8585
};
8686
},
87+
getSecondaryItems: ({
88+
submission,
89+
selectedReviewRound,
90+
selectedStageId,
91+
permissions,
92+
}) => {
93+
if (!permissions.accessibleStages.includes(selectedStageId)) {
94+
return {
95+
shouldContinue: false,
96+
items: [],
97+
};
98+
}
99+
},
100+
getActionItems: ({
101+
submission,
102+
selectedStageId,
103+
selectedReviewRound,
104+
permissions,
105+
}) => {
106+
if (!permissions.accessibleStages.includes(selectedStageId)) {
107+
return {
108+
shouldContinue: false,
109+
items: [],
110+
};
111+
}
112+
},
87113
},
88114
[pkp.const.WORKFLOW_STAGE_ID_SUBMISSION]: {
89115
getPrimaryItems: ({submission, selectedStageId, selectedReviewRound}) => {

src/pages/workflow/composables/useWorkflowConfig/workflowConfigEditorialOJS.js

+26
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,32 @@ export const WorkflowConfig = {
131131
items,
132132
};
133133
},
134+
getSecondaryItems: ({
135+
submission,
136+
selectedReviewRound,
137+
selectedStageId,
138+
permissions,
139+
}) => {
140+
if (!permissions.accessibleStages.includes(selectedStageId)) {
141+
return {
142+
shouldContinue: false,
143+
items: [],
144+
};
145+
}
146+
},
147+
getActionItems: ({
148+
submission,
149+
selectedStageId,
150+
selectedReviewRound,
151+
permissions,
152+
}) => {
153+
if (!permissions.accessibleStages.includes(selectedStageId)) {
154+
return {
155+
shouldContinue: false,
156+
items: [],
157+
};
158+
}
159+
},
134160
},
135161
[pkp.const.WORKFLOW_STAGE_ID_SUBMISSION]: {
136162
getPrimaryItems: ({submission, selectedStageId, selectedReviewRound}) => {

src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOJS.js

+32-24
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,12 @@ export function useWorkflowNavigationConfigOJS(pageInitConfig) {
191191
);
192192
}
193193

194-
if (permissions.canAccessProduction) {
195-
items.push(
196-
getPublicationItem({
197-
name: 'galleys',
198-
label: t('submission.layout.galleys'),
199-
}),
200-
);
201-
}
194+
items.push(
195+
getPublicationItem({
196+
name: 'galleys',
197+
label: t('submission.layout.galleys'),
198+
}),
199+
);
202200

203201
return items;
204202
}
@@ -283,25 +281,35 @@ export function useWorkflowNavigationConfigOJS(pageInitConfig) {
283281
return [];
284282
}
285283

286-
const menuItems = [
287-
{
288-
key: 'workflow',
289-
label: t('manager.workflow'),
290-
icon: 'Dashboard',
291-
items: getWorkflowItems({submission, permissions}),
292-
},
293-
{
284+
let menuItems = [];
285+
286+
menuItems.push({
287+
key: 'workflow',
288+
label: t('manager.workflow'),
289+
icon: 'Dashboard',
290+
items: getWorkflowItems({submission, permissions}),
291+
});
292+
293+
if (
294+
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD &&
295+
permissions.canAccessPublication
296+
) {
297+
menuItems.push({
294298
key: 'publication',
295299
label: t('submission.publication'),
296300
icon: 'MySubmissions',
297-
items:
298-
pageInitConfig.dashboardPage ===
299-
DashboardPageTypes.EDITORIAL_DASHBOARD
300-
? getPublicationItemsEditorial({submission, permissions})
301-
: getPublicationItemsAuthor({submission, permissions}),
302-
},
303-
];
304-
301+
items: getPublicationItemsEditorial({submission, permissions}),
302+
});
303+
} else if (
304+
pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS
305+
) {
306+
menuItems.push({
307+
key: 'publication',
308+
label: t('submission.publication'),
309+
icon: 'MySubmissions',
310+
items: getPublicationItemsAuthor({submission, permissions}),
311+
});
312+
}
305313
return menuItems;
306314
}
307315

src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOMP.js

+26-17
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,12 @@ export function useWorkflowNavigationConfigOMP(pageInitConfig) {
147147
);
148148
}
149149

150-
if (permissions.canAccessProduction) {
151-
items.push(
152-
getPublicationItem({
153-
name: 'galleys',
154-
label: t('submission.layout.galleys'),
155-
}),
156-
);
157-
}
150+
items.push(
151+
getPublicationItem({
152+
name: 'galleys',
153+
label: t('submission.layout.galleys'),
154+
}),
155+
);
158156

159157
return items;
160158
}
@@ -298,15 +296,26 @@ export function useWorkflowNavigationConfigOMP(pageInitConfig) {
298296
items: getMarketingItems({submission, permissions}),
299297
});
300298
}
301-
menuItems.push({
302-
key: 'publication',
303-
label: t('submission.publication'),
304-
icon: 'MySubmissions',
305-
items:
306-
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD
307-
? getPublicationItemsEditorial({submission, permissions})
308-
: getPublicationItemsAuthor({submission, permissions}),
309-
});
299+
if (
300+
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD &&
301+
permissions.canAccessPublication
302+
) {
303+
menuItems.push({
304+
key: 'publication',
305+
label: t('submission.publication'),
306+
icon: 'MySubmissions',
307+
items: getPublicationItemsEditorial({submission, permissions}),
308+
});
309+
} else if (
310+
pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS
311+
) {
312+
menuItems.push({
313+
key: 'publication',
314+
label: t('submission.publication'),
315+
icon: 'MySubmissions',
316+
items: getPublicationItemsAuthor({submission, permissions}),
317+
});
318+
}
310319

311320
return menuItems;
312321
}

src/pages/workflow/composables/useWorkflowNavigationConfig/useWorkflowNavigationConfigOPS.js

+20-9
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,26 @@ export function useWorkflowNavigationConfigOPS(pageInitConfig) {
176176
});
177177
}
178178

179-
menuItems.push({
180-
key: 'publication',
181-
label: t('submission.publication'),
182-
icon: 'MySubmissions',
183-
items:
184-
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD
185-
? getPublicationItemsEditorial({submission, permissions})
186-
: getPublicationItemsAuthor({submission, permissions}),
187-
});
179+
if (
180+
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD &&
181+
permissions.canAccessPublication
182+
) {
183+
menuItems.push({
184+
key: 'publication',
185+
label: t('submission.publication'),
186+
icon: 'MySubmissions',
187+
items: getPublicationItemsEditorial({submission, permissions}),
188+
});
189+
} else if (
190+
pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS
191+
) {
192+
menuItems.push({
193+
key: 'publication',
194+
label: t('submission.publication'),
195+
icon: 'MySubmissions',
196+
items: getPublicationItemsAuthor({submission, permissions}),
197+
});
198+
}
188199

189200
return menuItems;
190201
}

src/pages/workflow/composables/useWorkflowPermissions.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,13 @@ export function useWorkflowPermissions({submission, selectedPublication}) {
5858
}
5959

6060
if (
61-
hasIntersection(activeStage.currentUserAssignedRoles, [
62-
...EditorialRoles,
63-
pkp.const.ROLE_ID_AUTHOR,
64-
])
61+
hasIntersection(activeStage.currentUserAssignedRoles, [...EditorialRoles])
6562
) {
6663
canAccessPublication = true;
6764

6865
if (
6966
hasIntersection(productionStage.currentUserAssignedRoles, [
7067
...EditorialRoles,
71-
pkp.const.ROLE_ID_AUTHOR,
7268
])
7369
) {
7470
canAccessProduction = true;

0 commit comments

Comments
 (0)