Skip to content

Commit

Permalink
ENHANCEMENT Use batch permission checker for canView for files
Browse files Browse the repository at this point in the history
  • Loading branch information
Damian Mooyman committed Sep 7, 2017
1 parent 4679997 commit 74643a2
Showing 1 changed file with 13 additions and 10 deletions.
23 changes: 13 additions & 10 deletions code/GraphQL/FolderTypeCreator.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,9 @@ public function getChildrenConnection()
}

/**
* @param $object
* @param Folder $object
* @param array $args
* @param $context
* @param array $context
* @param ResolveInfo $info
* @param Connection $childrenConnection
* @return mixed
Expand All @@ -148,6 +148,7 @@ public function resolveChildrenConnection(
));
}

/** @var DataList $list */
$list = Versioned::get_by_stage(File::class, 'Stage');
$filterInputType = new FileFilterInputTypeCreator($this->manager);

Expand All @@ -167,20 +168,22 @@ public function resolveChildrenConnection(
}
});

// Filter by permission
$ids = $list->column('ID');
$permissionChecker = File::singleton()->getPermissionChecker();
$canViewIDs = array_keys(array_filter($permissionChecker->canViewMultiple(
$ids,
$context['currentUser']
)));
// Filter by visible IDs (or force empty set if none are visible)
$list = $list->filter('ID', $canViewIDs ?: 0);

// Apply pagination
$return = $childrenConnection->resolveList(
$list,
$args
);

// Filter by permission. Converts from DataList to ArrayList
// TODO Add more records if records are filtered out here
/** @var Filterable $resolvedList */
$resolvedList = $return['edges'];
$return['edges'] = $resolvedList->filterByCallback(function (File $file) use ($context) {
return $file->canView($context['currentUser']);
});

return $return;
}

Expand Down

0 comments on commit 74643a2

Please sign in to comment.