Skip to content

Commit

Permalink
Merge pull request #2875 from NateWr/i6257_upload_policies
Browse files Browse the repository at this point in the history
 pkp/pkp-lib#6257 Move file upload policies into pkp-lib
  • Loading branch information
NateWr authored Oct 22, 2020
2 parents 28112d4 + 13e4ed0 commit db8a1d3
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 52 deletions.
51 changes: 0 additions & 51 deletions controllers/wizard/fileUpload/FileUploadWizardHandler.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,57 +23,6 @@
import('lib.pkp.controllers.wizard.fileUpload.PKPFileUploadWizardHandler');

class FileUploadWizardHandler extends PKPFileUploadWizardHandler {
//
// Implement template methods from PKPHandler
//
function authorize($request, &$args, $roleAssignments) {
// We validate file stage outside a policy because
// we don't need to validate in another places.
$fileStage = $request->getUserVar('fileStage');
if ($fileStage) {
$submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO'); /* @var $submissionFileDao SubmissionFileDAO */
$fileStages = $submissionFileDao->getAllFileStages();
if (!in_array($fileStage, $fileStages)) {
return false;
}
}

// Validate file ids. We have two cases where we might have a file id.
// CASE 1: user is uploading a revision to a file, the revised file id
// will need validation.
$revisedFileId = (int)$request->getUserVar('revisedFileId');
// CASE 2: user already have uploaded a file (and it's editing the metadata),
// we will need to validate the uploaded file id.
$fileId = (int)$request->getUserVar('fileId');
// Get the right one to validate.
$fileIdToValidate = null;
if ($revisedFileId && !$fileId) {
$fileIdToValidate = $revisedFileId;
} else if ($fileId && !$revisedFileId) {
$fileIdToValidate = $fileId;
} else if ($revisedFileId && $fileId) {
// Those two cases will not happen at the same time.
return false;
}
if ($fileIdToValidate) {
import('lib.pkp.classes.security.authorization.SubmissionFileAccessPolicy');
$this->addPolicy(new SubmissionFileAccessPolicy($request, $args, $roleAssignments, SUBMISSION_FILE_ACCESS_MODIFY, $fileIdToValidate));
}

// Allow both reviewers (if in review) and context roles.
$stageId = (int)$request->getUserVar('stageId');
import('lib.pkp.classes.security.authorization.ReviewStageAccessPolicy');
$this->addPolicy(new ReviewStageAccessPolicy($request, $args, $roleAssignments, 'submissionId', $stageId));

// Authorize review round id when this handler is used in review stages.
import('lib.pkp.classes.submission.SubmissionFile'); // Constants
if ($stageId == WORKFLOW_STAGE_ID_EXTERNAL_REVIEW && !in_array($request->getUserVar('fileStage'), array(SUBMISSION_FILE_QUERY, SUBMISSION_FILE_DEPENDENT))) {
import('lib.pkp.classes.security.authorization.internal.ReviewRoundRequiredPolicy');
$this->addPolicy(new ReviewRoundRequiredPolicy($request, $args));
}

return parent::authorize($request, $args, $roleAssignments);
}

/**
* @copydoc PKPFileUploadWizardHandler::_attachEntities
Expand Down
2 changes: 1 addition & 1 deletion lib/pkp
Submodule pkp updated 21 files
+2 −0 classes/core/PKPApplication.inc.php
+2 −2 classes/security/authorization/AuthorizationPolicy.inc.php
+96 −0 classes/security/authorization/NoteAccessPolicy.inc.php
+100 −0 classes/security/authorization/ReviewAssignmentFileWritePolicy.inc.php
+26 −1 classes/security/authorization/SubmissionFileAccessPolicy.inc.php
+1 −1 classes/security/authorization/internal/QueryRequiredPolicy.inc.php
+94 −0 classes/security/authorization/internal/RepresentationUploadAccessPolicy.inc.php
+1 −1 classes/security/authorization/internal/ReviewRoundRequiredPolicy.inc.php
+54 −0 classes/security/authorization/internal/SubmissionFileMatchesWorkflowStageIdPolicy.inc.php
+113 −0 classes/security/authorization/internal/SubmissionFileStageAccessPolicy.inc.php
+2 −2 classes/services/PKPUserService.inc.php
+86 −1 classes/submission/SubmissionFileDAO.inc.php
+7 −1 controllers/api/file/linkAction/AddFileLinkAction.inc.php
+5 −1 controllers/grid/files/query/QueryNoteFilesGridDataProvider.inc.php
+125 −6 controllers/wizard/fileUpload/PKPFileUploadWizardHandler.inc.php
+5 −1 controllers/wizard/fileUpload/form/PKPSubmissionFilesUploadBaseForm.inc.php
+3 −2 controllers/wizard/fileUpload/form/SubmissionFilesUploadConfirmationForm.inc.php
+7 −4 controllers/wizard/fileUpload/form/SubmissionFilesUploadForm.inc.php
+1 −1 js/controllers/form/MultilingualInputHandler.js
+3 −3 templates/controllers/wizard/fileUpload/fileUploadWizard.tpl
+1 −1 templates/controllers/wizard/fileUpload/form/fileUploadForm.tpl

0 comments on commit db8a1d3

Please sign in to comment.