PHRAS-3262 add or update user permission

This commit is contained in:
aina esokia
2020-12-08 18:07:12 +03:00
parent 4c2f682e7b
commit ab592677b6
3 changed files with 292 additions and 1 deletions

View File

@@ -68,6 +68,87 @@ class PSExposeController extends Controller
]);
}
/**
* Get list of user or group if param "groups" defined
*
* @param PhraseaApplication $app
* @param Request $request
* @return \Symfony\Component\HttpFoundation\JsonResponse
*
*/
public function listUsersAction(PhraseaApplication $app, Request $request)
{
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$request->get('exposeName')];
$userOrGroup = 'users';
if ($request->get('groups')) {
$userOrGroup = 'groups';
}
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$accessToken = $this->getAndSaveToken($exposeConfiguration);
$response = $exposeClient->get('/permissions/' . $userOrGroup, [
'headers' => [
'Authorization' => 'Bearer '. $accessToken
]
]);
$list = [];
if ($response->getStatusCode() == 200) {
$list = json_decode($response->getBody()->getContents(),true);
}
return $app->json([
'list' => $list
]);
}
/**
* Add or update access control entry (ACE) for a publication
*
* @param PhraseaApplication $app
* @param Request $request
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function updatePublicationPermissionAction(PhraseaApplication $app, Request $request)
{
$exposeConfiguration = $app['conf']->get(['phraseanet-service', 'expose-service', 'exposes'], []);
$exposeConfiguration = $exposeConfiguration[$request->get('exposeName')];
$exposeClient = new Client(['base_uri' => $exposeConfiguration['expose_base_uri'], 'http_errors' => false]);
$accessToken = $this->getAndSaveToken($exposeConfiguration);
try {
$response = $exposeClient->put('/permissions/ace', [
'headers' => [
'Authorization' => 'Bearer '. $accessToken,
'Content-Type' => 'application/json'
],
'json' => $request->get('jsonData')
]);
} catch(\Exception $e) {
return $this->app->json([
'success' => false,
'message' => $e->getMessage()
]);
}
if ($response->getStatusCode() !== 200) {
return $this->app->json([
'success' => false,
'message' => 'Status code: '. $response->getStatusCode()
]);
}
return $this->app->json([
'success' => true,
'message' => 'Permission successfully updated!'
]);
}
/**
* Get list of publication
* Use param "format=json" to retrieve a json