16 import(
'lib.pkp.classes.security.authorization.internal.ContextPolicy');
17 import(
'lib.pkp.classes.security.authorization.RoleBasedHandlerOperationPolicy');
20 define(
'SUBMISSION_FILE_ACCESS_READ', 1);
21 define(
'SUBMISSION_FILE_ACCESS_MODIFY', 2);
38 function __construct($request, $args, $roleAssignments, $mode, $fileIdAndRevision =
null, $submissionParameterName =
'submissionId') {
43 parent::__construct($request);
44 $this->_baseFileAccessPolicy = $this->
buildFileAccessPolicy($request, $args, $roleAssignments, $mode, $fileIdAndRevision, $submissionParameterName);
56 function buildFileAccessPolicy($request, $args, $roleAssignments, $mode, $fileIdAndRevision, $submissionParameterName) {
58 import(
'lib.pkp.classes.security.authorization.internal.SubmissionRequiredPolicy');
60 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileMatchesSubmissionPolicy');
66 $fileAccessPolicy =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
72 if (isset($roleAssignments[ROLE_ID_MANAGER])) {
75 $managerFileAccessPolicy =
new PolicySet(COMBINING_DENY_OVERRIDES);
77 import(
'lib.pkp.classes.security.authorization.WorkflowStageAccessPolicy');
78 $managerFileAccessPolicy->addPolicy(
new WorkflowStageAccessPolicy($request, $args, $roleAssignments,
'submissionId', $request->getUserVar(
'stageId')));
79 import(
'lib.pkp.classes.security.authorization.AssignedStageRoleHandlerOperationPolicy');
82 $fileAccessPolicy->addPolicy($managerFileAccessPolicy);
89 if (isset($roleAssignments[ROLE_ID_AUTHOR])) {
91 $authorFileAccessPolicy =
new PolicySet(COMBINING_DENY_OVERRIDES);
95 import(
'lib.pkp.classes.security.authorization.WorkflowStageAccessPolicy');
96 $authorFileAccessPolicy->addPolicy(
new WorkflowStageAccessPolicy($request, $args, $roleAssignments,
'submissionId', $request->getUserVar(
'stageId')));
97 import(
'lib.pkp.classes.security.authorization.AssignedStageRoleHandlerOperationPolicy');
101 $authorFileAccessOptionsPolicy =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
104 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileUploaderAccessPolicy');
109 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileRequestedRevisionRequiredPolicy');
113 if (!($mode & SUBMISSION_FILE_ACCESS_MODIFY)) {
114 import(
'lib.pkp.classes.submission.SubmissionFile');
117 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileStageRequiredPolicy');
124 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileAssignedQueryAccessPolicy');
138 $authorFileAccessPolicy->addPolicy($authorFileAccessOptionsPolicy);
140 $fileAccessPolicy->addPolicy($authorFileAccessPolicy);
147 if (isset($roleAssignments[ROLE_ID_REVIEWER])) {
149 $reviewerFileAccessPolicy =
new PolicySet(COMBINING_DENY_OVERRIDES);
153 $reviewerFileAccessOptionsPolicy =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
156 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileUploaderAccessPolicy');
161 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileAssignedReviewerAccessPolicy');
162 if (!($mode & SUBMISSION_FILE_ACCESS_MODIFY)) {
167 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileAssignedQueryAccessPolicy');
171 $reviewerFileAccessPolicy->addPolicy($reviewerFileAccessOptionsPolicy);
174 $fileAccessPolicy->addPolicy($reviewerFileAccessPolicy);
181 if (isset($roleAssignments[ROLE_ID_ASSISTANT])) {
183 $contextAssistantFileAccessPolicy =
new PolicySet(COMBINING_DENY_OVERRIDES);
188 import(
'lib.pkp.classes.security.authorization.WorkflowStageAccessPolicy');
189 $contextAssistantFileAccessPolicy->addPolicy(
new WorkflowStageAccessPolicy($request, $args, $roleAssignments,
'submissionId', $request->getUserVar(
'stageId')));
190 import(
'lib.pkp.classes.security.authorization.AssignedStageRoleHandlerOperationPolicy');
194 $contextAssistantFileAccessOptionsPolicy =
new PolicySet(COMBINING_PERMIT_OVERRIDES);
197 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileNotQueryAccessPolicy');
201 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileAssignedQueryAccessPolicy');
205 $contextAssistantFileAccessPolicy->addPolicy($contextAssistantFileAccessOptionsPolicy);
207 $fileAccessPolicy->addPolicy($contextAssistantFileAccessPolicy);
213 if (isset($roleAssignments[ROLE_ID_SUB_EDITOR])) {
215 $subEditorFileAccessPolicy =
new PolicySet(COMBINING_DENY_OVERRIDES);
219 import(
'lib.pkp.classes.security.authorization.internal.UserAccessibleWorkflowStageRequiredPolicy');
221 import(
'lib.pkp.classes.security.authorization.AssignedStageRoleHandlerOperationPolicy');
225 import(
'lib.pkp.classes.security.authorization.internal.SubmissionFileAuthorEditorPolicy');
228 $fileAccessPolicy->addPolicy($subEditorFileAccessPolicy);
232 return $fileAccessPolicy;