Open Monograph Press  3.3.0
QueryAssignedToUserAccessPolicy.inc.php
1 <?php
16 import('lib.pkp.classes.security.authorization.AuthorizationPolicy');
17 
20  var $_request;
21 
26  function __construct($request) {
27  parent::__construct('user.authorization.submissionQuery');
28  $this->_request = $request;
29  }
30 
31  //
32  // Implement template methods from AuthorizationPolicy
33  //
37  function effect() {
38  // A query should already be in the context.
39  $query = $this->getAuthorizedContextObject(ASSOC_TYPE_QUERY);
40  if (!is_a($query, 'Query')) return AUTHORIZATION_DENY;
41 
42  // Check that there is a currently logged in user.
43  $user = $this->_request->getUser();
44  if (!is_a($user, 'User')) return AUTHORIZATION_DENY;
45 
46  // Determine if the query is assigned to the user.
47  $queryDao = DAORegistry::getDAO('QueryDAO'); /* @var $queryDao QueryDAO */
48  if ($queryDao->getParticipantIds($query->getId(), $user->getId())) return AUTHORIZATION_PERMIT;
49 
50  // Managers are allowed to access discussions they are not participants in
51  // as long as they have Manager-level access to the workflow stage
52  $accessibleWorkflowStages = $this->getAuthorizedContextObject(ASSOC_TYPE_ACCESSIBLE_WORKFLOW_STAGES);
53  $managerAssignments = array_intersect(array(ROLE_ID_MANAGER), $accessibleWorkflowStages[$query->getStageId()]);
54  if (!empty($managerAssignments)) return AUTHORIZATION_PERMIT;
55 
56  // Otherwise, deny.
57  return AUTHORIZATION_DENY;
58  }
59 }
60 
61 
QueryAssignedToUserAccessPolicy
Class to control access to a query that is assigned to the current user.
Definition: QueryAssignedToUserAccessPolicy.inc.php:18
QueryAssignedToUserAccessPolicy\__construct
__construct($request)
Definition: QueryAssignedToUserAccessPolicy.inc.php:29
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
QueryAssignedToUserAccessPolicy\$_request
$_request
Definition: QueryAssignedToUserAccessPolicy.inc.php:23
AuthorizationPolicy\getAuthorizedContextObject
& getAuthorizedContextObject($assocType)
Definition: AuthorizationPolicy.inc.php:117
AuthorizationPolicy
Class to represent an authorization policy.
Definition: AuthorizationPolicy.inc.php:31
QueryAssignedToUserAccessPolicy\effect
effect()
Definition: QueryAssignedToUserAccessPolicy.inc.php:40