Skip to content

Commit 3bf5692

Browse files
committed
pkp#10929 Temporary fix for Production Editor's file upload issues
1 parent 11a5126 commit 3bf5692

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

api/v1/submissions/PKPSubmissionController.php

+30-1
Original file line numberDiff line numberDiff line change
@@ -664,8 +664,37 @@ public function add(Request $illuminateRequest): JsonResponse
664664
: $submitAsUserGroup->permitMetadataEdit
665665
);
666666

667+
// Production Editor group has Managerial role but is not assigned to submission stage.
668+
$isManager = $submitAsUserGroup->roleId === Role::ROLE_ID_MANAGER && !$request->getUser()->hasRole([Role::ROLE_ID_SITE_ADMIN], \PKP\core\PKPApplication::SITE_CONTEXT_ID);
669+
$stagesAssignedToGroup = $isManager ? Repo::userGroup()->getAssignedStagesByUserGroupId($context->getId(), $submitAsUserGroup->id) : collect();
670+
$isSubmittingAsProductionEditor = $isManager && !$stagesAssignedToGroup->contains(WORKFLOW_STAGE_ID_SUBMISSION);
671+
// Temporary solution for https://github.com/pkp/pkp-lib/issues/10929
672+
// If submitting as Production Editor, then also assign as Author to allow full access to submission stage
673+
if ($isSubmittingAsProductionEditor) {
674+
$authorGroup = Repo::userGroup()->getByRoleIds([Role::ROLE_ID_AUTHOR], $context->getId())->first();
675+
676+
// Assign author role to user if not already assigned
677+
if (!$submitterUserGroups->contains('roleId', Role::ROLE_ID_AUTHOR)) {
678+
Repo::userGroup()->assignUserToGroup(
679+
$user->getId(),
680+
$authorGroup->id
681+
);
682+
}
683+
684+
// Assign Production Editor to submission as an Author to allow access to submission stage operations
685+
Repo::stageAssignment()
686+
->build(
687+
$submission->getId(),
688+
$authorGroup->id,
689+
$request->getUser()->getId(),
690+
$authorGroup->recommendOnly,
691+
// Authors can always edit metadata before submitting
692+
true
693+
);
694+
}
695+
667696
// Create an author record from the submitter's user account
668-
if ($submitAsUserGroup->roleId === Role::ROLE_ID_AUTHOR) {
697+
if ($submitAsUserGroup->roleId === Role::ROLE_ID_AUTHOR || $isSubmittingAsProductionEditor) {
669698
$author = Repo::author()->newAuthorFromUser($request->getUser(), $submission, $context);
670699
$author->setData('publicationId', $publication->getId());
671700
$author->setUserGroupId($submitAsUserGroup->id);

classes/invitation/core/Invitation.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use APP\facades\Repo;
1919
use Carbon\Carbon;
2020
use Exception;
21-
use Identity;
21+
use PKP\identity\Identity;
2222
use Illuminate\Database\Eloquent\Builder;
2323
use Illuminate\Support\Facades\Mail;
2424
use PKP\config\Config;

classes/invitation/invitations/userRoleAssignment/handlers/api/UserRoleAssignmentReceiveController.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
use PKP\security\authorization\AnonymousUserPolicy;
3131
use PKP\security\authorization\UserRequiredPolicy;
3232
use PKP\userGroup\relationships\enums\UserUserGroupMastheadStatus;
33-
use PKPRequest;
34-
use Validation;
33+
use PKP\core\PKPRequest;
34+
use PKP\security\Validation;
3535

3636
class UserRoleAssignmentReceiveController extends ReceiveInvitationController
3737
{

classes/invitation/invitations/userRoleAssignment/payload/UserRoleAssignmentInvitePayload.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
namespace PKP\invitation\invitations\userRoleAssignment\payload;
1616

17-
use DAORegistry;
17+
use PKP\db\DAORegistry;
1818
use Illuminate\Validation\Rule;
1919
use PKP\invitation\core\enums\ValidationContext;
2020
use PKP\invitation\core\InvitePayload;

0 commit comments

Comments
 (0)