Merge pull request #2583 from aynsix/PHRAS-2032-porting-api-route-me-collections

PHRAS-2032 port to 4.1 api route me/collections
This commit is contained in:
Nicolas Maillat
2018-05-10 11:01:16 +02:00
committed by GitHub
3 changed files with 70 additions and 1 deletions

View File

@@ -2710,6 +2710,19 @@ class V1Controller extends Controller
return Result::create($request, $ret)->createResponse();
}
/**
* Returns all collections available for the user
* @param Request $request
* @return Response
*/
public function getCurrentUserCollectionsAction(Request $request)
{
$ret = [
"collections" => $this->listUserAuthorizedCollections($this->getAuthenticatedUser()),
];
return Result::create($request, $ret)->createResponse();
}
/**
* Returns list of Metadata Fields from the databoxes on which the user has rights
* @param User $user
@@ -2820,6 +2833,52 @@ class V1Controller extends Controller
return $ret;
}
/**
* Returns list of collection from the databoxes on which the user has rights
* @param User $user
* @return array
*/
private function listUserAuthorizedCollections(User $user)
{
$acl = $this->getAclForUser($user);
$rights = $acl->get_bas_rights();
$bases = $acl->get_granted_base();
$grants = [];
$statusMapper = new RestrictedStatusExtractor($acl, $this->getApplicationBox());
foreach ($bases as $base) {
$baseGrants = [];
foreach ($rights as $right) {
if (!$acl->has_right_on_base($base->get_base_id(), $right)) {
continue;
}
$baseGrants[] = $right;
}
$grants[] = [
'databox_id' => $base->get_sbas_id(),
'base_id' => $base->get_base_id(),
'collection_id' => $base->get_coll_id(),
'name' => $base->get_name(),
'logo' => $base->get_binary_minilogos() ? base64_encode($base->get_binary_minilogos()) : '',
'labels' => [
'fr' => $base->get_label('fr'),
'en' => $base->get_label('en'),
'de' => $base->get_label('de'),
'nl' => $base->get_label('nl'),
],
'rights' => $baseGrants,
'statuses' => $statusMapper->getRestrictedStatuses($base->get_base_id())
];
}
return $grants;
}
public function deleteCurrentUserAction(Request $request)
{
try {

View File

@@ -266,7 +266,7 @@ class V1 extends Api implements ControllerProviderInterface, ServiceProviderInte
$controllers->delete('/me/', 'controller.api.v1:deleteCurrentUserAction');
$controllers->get('/me/structures/', 'controller.api.v1:getCurrentUserStructureAction');
$controllers->get('/me/subdefs/', 'controller.api.v1:getCurrentUserSubdefsAction');
$controllers->get('/me/collections/', 'controller.api.v1:getCurrentUserCollectionsAction');
$controllers->post('/me/request-collections/', 'controller.api.v1:createCollectionRequests');
$controllers->post('/me/update-account/', 'controller.api.v1:updateCurrentUserAction');