addRoleAssignment($roles, ['plugin']); parent::__construct($roles); } // // Overriden template methods. // /** * @see GridHandler::getRowInstance() */ public function getRowInstance() { return new PluginGridRow($this->getAuthorizedContextObject(Application::ASSOC_TYPE_USER_ROLES)); } /** * @see GridHandler::authorize() * * @param PKPRequest $request * @param array $args * @param array $roleAssignments */ public function authorize($request, &$args, $roleAssignments) { $category = $request->getUserVar('category'); $pluginName = $request->getUserVar('plugin'); $verb = $request->getUserVar('verb'); if ($category && $pluginName) { if ($verb) { $accessMode = PluginAccessPolicy::ACCESS_MODE_MANAGE; } else { $accessMode = PluginAccessPolicy::ACCESS_MODE_ADMIN; } $this->addPolicy(new PluginAccessPolicy($request, $args, $roleAssignments, $accessMode)); } else { $rolePolicy = new PolicySet(PolicySet::COMBINING_PERMIT_OVERRIDES); foreach ($roleAssignments as $role => $operations) { $rolePolicy->addPolicy(new RoleBasedHandlerOperationPolicy($request, $role, $operations)); } $this->addPolicy($rolePolicy); } return parent::authorize($request, $args, $roleAssignments); } }