Skip to content

Commit

Permalink
pkp/pkp-lib#10769 Permission logic improvements to be consistent with…
Browse files Browse the repository at this point in the history
… 3.4
  • Loading branch information
jardakotesovec committed Feb 3, 2025
1 parent 9f72abc commit 4a06576
Show file tree
Hide file tree
Showing 6 changed files with 131 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,32 @@ export const WorkflowConfig = {
items,
};
},
getSecondaryItems: ({
submission,
selectedReviewRound,
selectedStageId,
permissions,
}) => {
if (!permissions.accessibleStages.includes(selectedStageId)) {
return {
shouldContinue: false,
items: [],
};
}
},
getActionItems: ({
submission,
selectedStageId,
selectedReviewRound,
permissions,
}) => {
if (!permissions.accessibleStages.includes(selectedStageId)) {
return {
shouldContinue: false,
items: [],
};
}
},
},
[pkp.const.WORKFLOW_STAGE_ID_SUBMISSION]: {
getPrimaryItems: ({submission, selectedStageId, selectedReviewRound}) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,32 @@ export const WorkflowConfig = {
items,
};
},
getSecondaryItems: ({
submission,
selectedReviewRound,
selectedStageId,
permissions,
}) => {
if (!permissions.accessibleStages.includes(selectedStageId)) {
return {
shouldContinue: false,
items: [],
};
}
},
getActionItems: ({
submission,
selectedStageId,
selectedReviewRound,
permissions,
}) => {
if (!permissions.accessibleStages.includes(selectedStageId)) {
return {
shouldContinue: false,
items: [],
};
}
},
},
[pkp.const.WORKFLOW_STAGE_ID_SUBMISSION]: {
getPrimaryItems: ({submission, selectedStageId, selectedReviewRound}) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,14 +191,12 @@ export function useWorkflowNavigationConfigOJS(pageInitConfig) {
);
}

if (permissions.canAccessProduction) {
items.push(
getPublicationItem({
name: 'galleys',
label: t('submission.layout.galleys'),
}),
);
}
items.push(
getPublicationItem({
name: 'galleys',
label: t('submission.layout.galleys'),
}),
);

return items;
}
Expand Down Expand Up @@ -283,25 +281,35 @@ export function useWorkflowNavigationConfigOJS(pageInitConfig) {
return [];
}

const menuItems = [
{
key: 'workflow',
label: t('manager.workflow'),
icon: 'Dashboard',
items: getWorkflowItems({submission, permissions}),
},
{
let menuItems = [];

menuItems.push({
key: 'workflow',
label: t('manager.workflow'),
icon: 'Dashboard',
items: getWorkflowItems({submission, permissions}),
});

if (
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD &&
permissions.canAccessPublication
) {
menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items:
pageInitConfig.dashboardPage ===
DashboardPageTypes.EDITORIAL_DASHBOARD
? getPublicationItemsEditorial({submission, permissions})
: getPublicationItemsAuthor({submission, permissions}),
},
];

items: getPublicationItemsEditorial({submission, permissions}),
});
} else if (
pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS
) {
menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items: getPublicationItemsAuthor({submission, permissions}),
});
}
return menuItems;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,14 +147,12 @@ export function useWorkflowNavigationConfigOMP(pageInitConfig) {
);
}

if (permissions.canAccessProduction) {
items.push(
getPublicationItem({
name: 'galleys',
label: t('submission.layout.galleys'),
}),
);
}
items.push(
getPublicationItem({
name: 'galleys',
label: t('submission.layout.galleys'),
}),
);

return items;
}
Expand Down Expand Up @@ -298,15 +296,26 @@ export function useWorkflowNavigationConfigOMP(pageInitConfig) {
items: getMarketingItems({submission, permissions}),
});
}
menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items:
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD
? getPublicationItemsEditorial({submission, permissions})
: getPublicationItemsAuthor({submission, permissions}),
});
if (
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD &&
permissions.canAccessPublication
) {
menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items: getPublicationItemsEditorial({submission, permissions}),
});
} else if (
pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS
) {
menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items: getPublicationItemsAuthor({submission, permissions}),
});
}

return menuItems;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,15 +176,26 @@ export function useWorkflowNavigationConfigOPS(pageInitConfig) {
});
}

menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items:
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD
? getPublicationItemsEditorial({submission, permissions})
: getPublicationItemsAuthor({submission, permissions}),
});
if (
pageInitConfig.dashboardPage === DashboardPageTypes.EDITORIAL_DASHBOARD &&
permissions.canAccessPublication
) {
menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items: getPublicationItemsEditorial({submission, permissions}),
});
} else if (
pageInitConfig.dashboardPage === DashboardPageTypes.MY_SUBMISSIONS
) {
menuItems.push({
key: 'publication',
label: t('submission.publication'),
icon: 'MySubmissions',
items: getPublicationItemsAuthor({submission, permissions}),
});
}

return menuItems;
}
Expand Down
6 changes: 1 addition & 5 deletions src/pages/workflow/composables/useWorkflowPermissions.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,17 +58,13 @@ export function useWorkflowPermissions({submission, selectedPublication}) {
}

if (
hasIntersection(activeStage.currentUserAssignedRoles, [
...EditorialRoles,
pkp.const.ROLE_ID_AUTHOR,
])
hasIntersection(activeStage.currentUserAssignedRoles, [...EditorialRoles])
) {
canAccessPublication = true;

if (
hasIntersection(productionStage.currentUserAssignedRoles, [
...EditorialRoles,
pkp.const.ROLE_ID_AUTHOR,
])
) {
canAccessProduction = true;
Expand Down

0 comments on commit 4a06576

Please sign in to comment.