/** * (non-PHPdoc) * @see \oat\generis\model\data\PermissionInterface::getPermissions() */ public function getPermissions(User $user, array $resourceIds) { if (in_array(INSTANCE_ROLE_SYSADMIN, $user->getRoles())) { $permissions = array(); foreach ($resourceIds as $id) { $permissions[$id] = $this->getSupportedRights(); } return $permissions; } $dbAccess = new DataBaseAccess(); $userIds = $user->getRoles(); $userIds[] = $user->getIdentifier(); return $dbAccess->getPermissions($userIds, $resourceIds); }
/** * Get the permissions a user has on a list of ressources * @dataProvider getPermissionProvider * @access public * @param array $userIds * @param array $resourceIds * @return array() */ public function testGetPermissions($userIds, array $resourceIds) { // get privileges for a user/roles and a resource $returnValue = array(); $inQueryResource = implode(',', array_fill(0, count($resourceIds), '?')); $inQueryUser = implode(',', array_fill(0, count($userIds), '?')); $query = "SELECT resource_id, privilege FROM " . DataBaseAccess::TABLE_PRIVILEGES_NAME . " WHERE resource_id IN ({$inQueryResource}) AND user_id IN ({$inQueryUser})"; $fetchResultFixture = array(array('resource_id' => 1, 'privilege' => 'open'), array('resource_id' => 2, 'privilege' => 'close'), array('resource_id' => 3, 'privilege' => 'create'), array('resource_id' => 3, 'privilege' => 'delete')); $resultFixture = array(1 => array('open'), 2 => array('close'), 3 => array('create', 'delete')); $params = $resourceIds; foreach ($userIds as $userId) { $params[] = $userId; } $persistenceMock = $this->getPersistenceMock($params, $query, $fetchResultFixture); $this->instance->setPersistence($persistenceMock); $this->assertSame($resultFixture, $this->instance->getPermissions($userIds, $resourceIds)); }