_reviewMethods = $reviewMethods; } // // Implement template methods from AuthorizationPolicy // /** * @see DataObjectRequiredPolicy::dataObjectEffect() */ public function dataObjectEffect() { $reviewId = (int)$this->getDataObjectId(); if (!$reviewId) { return AuthorizationPolicy::AUTHORIZATION_DENY; } $reviewAssignmentDao = DAORegistry::getDAO('ReviewAssignmentDAO'); /** @var ReviewAssignmentDAO $reviewAssignmentDao */ $reviewAssignment = $reviewAssignmentDao->getById($reviewId); if (!($reviewAssignment instanceof \PKP\submission\reviewAssignment\ReviewAssignment)) { return AuthorizationPolicy::AUTHORIZATION_DENY; } // If reviewMethods is defined, check that the assignment uses the defined method(s) if ($this->_reviewMethods) { if (!in_array($reviewAssignment->getReviewMethod(), $this->_reviewMethods)) { return AuthorizationPolicy::AUTHORIZATION_DENY; } } // Ensure that the review assignment actually belongs to the // authorized submission. $submission = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_SUBMISSION); assert($submission instanceof Submission); if ($reviewAssignment->getSubmissionId() != $submission->getId()) { return AuthorizationPolicy::AUTHORIZATION_DENY; } // Ensure that the review assignment is for this workflow stage $stageId = $this->getAuthorizedContextObject(Application::ASSOC_TYPE_WORKFLOW_STAGE); if ($reviewAssignment->getStageId() != $stageId) { return AuthorizationPolicy::AUTHORIZATION_DENY; } // Save the review Assignment to the authorization context. $this->addAuthorizedContextObject(Application::ASSOC_TYPE_REVIEW_ASSIGNMENT, $reviewAssignment); return AuthorizationPolicy::AUTHORIZATION_PERMIT; } } if (!PKP_STRICT_MODE) { class_alias('\PKP\security\authorization\internal\ReviewAssignmentRequiredPolicy', '\ReviewAssignmentRequiredPolicy'); }