diff --git a/src/app/entity/models/EntityModelAbstract.php b/src/app/entity/models/EntityModelAbstract.php index 06c8f39abbeafee2f2beafa2dfa9df4eccc8733f..8d9538275c93b7d0a99033c3f1fcbd5e02f34203 100755 --- a/src/app/entity/models/EntityModelAbstract.php +++ b/src/app/entity/models/EntityModelAbstract.php @@ -39,23 +39,23 @@ abstract class EntityModelAbstract return $aEntities; } - public static function getById(array $aArgs) + public static function getById(array $args) { - ValidatorModel::notEmpty($aArgs, ['id']); - ValidatorModel::intVal($aArgs, ['id']); + ValidatorModel::notEmpty($args, ['id']); + ValidatorModel::intVal($args, ['id']); - $aEntity = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + $entity = DatabaseModel::select([ + 'select' => empty($args['select']) ? ['*'] : $args['select'], 'table' => ['entities'], 'where' => ['id = ?'], - 'data' => [$aArgs['id']] + 'data' => [$args['id']] ]); - if (empty($aEntity[0])) { + if (empty($entity[0])) { return []; } - return $aEntity[0]; + return $entity[0]; } public static function getByEntityId(array $aArgs) diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php index 175439550d6b91d6c472f7120d72c5416cb0b1e4..e417237a5b70bf8df29a7f57883da5189760d03a 100755 --- a/src/app/resource/controllers/ResController.php +++ b/src/app/resource/controllers/ResController.php @@ -845,6 +845,12 @@ class ResController extends ResourceControlController return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']); } + $queryParams = $request->getQueryParams(); + if ($args['fieldId'] == 'destination' && !empty($queryParams['alt'])) { + $entity = EntityModel::getByEntityId(['entityId' => $resource['destination'], 'select' => ['id']]); + $resource['destination'] = $entity['id']; + } + return $response->withJson(['field' => $resource[$args['fieldId']]]); } diff --git a/src/app/resource/controllers/ResourceControlController.php b/src/app/resource/controllers/ResourceControlController.php index 5034e5b5ed1ca09a57e68febca651c3c741d9c0d..db36b5a382d0721fc3b90e38f25320f254cf76bb 100644 --- a/src/app/resource/controllers/ResourceControlController.php +++ b/src/app/resource/controllers/ResourceControlController.php @@ -123,7 +123,7 @@ class ResourceControlController return ['errors' => 'Body is not set or empty']; } - $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['status', 'model_id', 'format', 'external_id->>\'signatureBookId\' as signaturebookid']]); + $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['status', 'model_id', 'format', 'initiator', 'external_id->>\'signatureBookId\' as signaturebookid']]); if (empty($resource['status'])) { return ['errors' => 'Resource status is empty. It can not be modified']; } @@ -171,10 +171,16 @@ class ResourceControlController } if (!empty($body['initiator'])) { - $userEntities = UserModel::getEntitiesByLogin(['login' => $GLOBALS['userId']]); - $userEntities = array_column($userEntities, 'id'); - if (!in_array($body['initiator'], $userEntities)) { - return ['errors' => "Body initiator does not belong to your entities"]; + $entity = EntityModel::getById(['id' => $body['initiator'], 'select' => ['entity_id']]); + if (empty($entity)) { + return ['errors' => "Body initiator does not exist"]; + } + if ($body['initiator'] != $entity['entity_id']) { + $userEntities = UserModel::getEntitiesByLogin(['login' => $GLOBALS['userId']]); + $userEntities = array_column($userEntities, 'id'); + if (!in_array($body['initiator'], $userEntities)) { + return ['errors' => "Body initiator does not belong to your entities"]; + } } }