mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-24 02:13:15 +00:00
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();
|
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
|
* Returns list of Metadata Fields from the databoxes on which the user has rights
|
||||||
* @param User $user
|
* @param User $user
|
||||||
@@ -2820,6 +2833,52 @@ class V1Controller extends Controller
|
|||||||
return $ret;
|
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)
|
public function deleteCurrentUserAction(Request $request)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ class V1 extends Api implements ControllerProviderInterface, ServiceProviderInte
|
|||||||
$controllers->delete('/me/', 'controller.api.v1:deleteCurrentUserAction');
|
$controllers->delete('/me/', 'controller.api.v1:deleteCurrentUserAction');
|
||||||
$controllers->get('/me/structures/', 'controller.api.v1:getCurrentUserStructureAction');
|
$controllers->get('/me/structures/', 'controller.api.v1:getCurrentUserStructureAction');
|
||||||
$controllers->get('/me/subdefs/', 'controller.api.v1:getCurrentUserSubdefsAction');
|
$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/request-collections/', 'controller.api.v1:createCollectionRequests');
|
||||||
$controllers->post('/me/update-account/', 'controller.api.v1:updateCurrentUserAction');
|
$controllers->post('/me/update-account/', 'controller.api.v1:updateCurrentUserAction');
|
||||||
|
|||||||
@@ -127,6 +127,16 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase
|
|||||||
$this->assertArrayHasKey('subdefs', $content['response']);
|
$this->assertArrayHasKey('subdefs', $content['response']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testRouteMeCollections()
|
||||||
|
{
|
||||||
|
$this->setToken($this->userAccessToken);
|
||||||
|
$route = '/api/v1/me/collections/';
|
||||||
|
$this->evaluateMethodNotAllowedRoute($route, [ 'POST', 'PUT' ]);
|
||||||
|
self::$DI['client']->request('GET', $route, $this->getParameters(), [], ['HTTP_Accept' => $this->getAcceptMimeType()]);
|
||||||
|
$content = $this->unserialize(self::$DI['client']->getResponse()->getContent());
|
||||||
|
$this->assertArrayHasKey('collections', $content['response']);
|
||||||
|
}
|
||||||
|
|
||||||
protected function evaluateGoodUserItem($data, User $user)
|
protected function evaluateGoodUserItem($data, User $user)
|
||||||
{
|
{
|
||||||
foreach ([
|
foreach ([
|
||||||
|
|||||||
Reference in New Issue
Block a user