18 import(
'lib.pkp.classes.security.authorization.AuthorizationPolicy');
19 import(
'lib.pkp.classes.security.authorization.internal.UserAccessibleWorkflowStageRequiredPolicy');
30 parent::__construct(
'user.authorization.submissionAuthor');
31 $this->_request = $request;
42 $user = $this->_request->getUser();
43 if (!is_a($user,
'User'))
return AUTHORIZATION_DENY;
47 if (!is_a($submission,
'Submission'))
return AUTHORIZATION_DENY;
49 $context = $this->_request->getContext();
54 $submitterAssignments = $stageAssignmentDao->getBySubmissionAndStageId($submission->getId(),
null,
null, $user->getId());
56 while ($assignment = $submitterAssignments->next()) {
57 $userGroup = $userGroupDao->getById($assignment->getUserGroupId());
58 if ($userGroup->getRoleId() == ROLE_ID_AUTHOR) {
60 $accessibleWorkflowStages = array();
61 foreach ($workflowStages as $stageId) {
62 $accessibleStageRoles =
Services::get(
'user')->getAccessibleStageRoles($user->getId(), $context->getId(), $submission, $stageId);
63 if (!empty($accessibleStageRoles)) {
64 $accessibleWorkflowStages[$stageId] = $accessibleStageRoles;
69 return AUTHORIZATION_PERMIT;
72 return AUTHORIZATION_DENY;