mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-23 09:53:15 +00:00
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:
@@ -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 {
|
||||
|
@@ -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');
|
||||
|
Reference in New Issue
Block a user