diff --git a/src/Service/Search/SearchService/AbstractSearchHelper.php b/src/Service/Search/SearchService/AbstractSearchHelper.php index 64215ac4..96553690 100644 --- a/src/Service/Search/SearchService/AbstractSearchHelper.php +++ b/src/Service/Search/SearchService/AbstractSearchHelper.php @@ -46,7 +46,8 @@ public function __construct( public function addSearchRestrictions( SearchInterface $search, string $userPermission, - string $workspaceType + string $workspaceType, + PermissionTypes $permissionType = PermissionTypes::LIST ): SearchInterface { $user = $search->getUser(); if (!$user) { @@ -58,7 +59,7 @@ public function addSearchRestrictions( $search->addModifier(new WorkspaceQuery( $workspaceType, $user, - PermissionTypes::LIST->value + $permissionType->value )); } diff --git a/src/Service/Search/SearchService/Asset/AssetSearchService.php b/src/Service/Search/SearchService/Asset/AssetSearchService.php index 3c2adb94..e302ecc8 100644 --- a/src/Service/Search/SearchService/Asset/AssetSearchService.php +++ b/src/Service/Search/SearchService/Asset/AssetSearchService.php @@ -17,6 +17,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Asset; use Exception; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\UserPermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Exception\AssetSearchException; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\AssetSearchResult; @@ -47,12 +48,15 @@ public function __construct( /** * @throws AssetSearchException */ - public function search(SearchInterface $assetSearch): AssetSearchResult - { + public function search( + SearchInterface $assetSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): AssetSearchResult { $assetSearch = $this->searchHelper->addSearchRestrictions( search: $assetSearch, userPermission: UserPermissionTypes::ASSETS->value, - workspaceType: AssetWorkspace::WORKSPACE_TYPE + workspaceType: AssetWorkspace::WORKSPACE_TYPE, + permissionType: $permissionType ); $searchResult = $this->searchHelper->performSearch( @@ -124,6 +128,6 @@ private function searchAssetById(int $id, ?User $user = null): ?AssetSearchResul $assetSearch->setUser($user); } - return $this->search($assetSearch)->getItems()[0] ?? null; + return $this->search($assetSearch, PermissionTypes::VIEW)->getItems()[0] ?? null; } } diff --git a/src/Service/Search/SearchService/Asset/AssetSearchServiceInterface.php b/src/Service/Search/SearchService/Asset/AssetSearchServiceInterface.php index 01842f77..6a08143f 100644 --- a/src/Service/Search/SearchService/Asset/AssetSearchServiceInterface.php +++ b/src/Service/Search/SearchService/Asset/AssetSearchServiceInterface.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Asset; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Exception\AssetSearchException; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\AssetSearchResult; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\AssetSearchResultItem; @@ -27,7 +28,10 @@ interface AssetSearchServiceInterface /** * @throws AssetSearchException */ - public function search(SearchInterface $assetSearch): AssetSearchResult; + public function search( + SearchInterface $assetSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): AssetSearchResult; /** * @throws AssetSearchException diff --git a/src/Service/Search/SearchService/DataObject/DataObjectSearchService.php b/src/Service/Search/SearchService/DataObject/DataObjectSearchService.php index 82bf8b5e..cf1c8b08 100644 --- a/src/Service/Search/SearchService/DataObject/DataObjectSearchService.php +++ b/src/Service/Search/SearchService/DataObject/DataObjectSearchService.php @@ -17,6 +17,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\DataObject; use Exception; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\UserPermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\IndexName; use Pimcore\Bundle\GenericDataIndexBundle\Exception\DataObjectSearchException; @@ -48,14 +49,17 @@ public function __construct( /** * @throws DataObjectSearchException */ - public function search(DataObjectSearchInterface $dataObjectSearch): DataObjectSearchResult - { + public function search( + DataObjectSearchInterface $dataObjectSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): DataObjectSearchResult { $indexContext = $dataObjectSearch->getClassDefinition() ?: IndexName::DATA_OBJECT->value; $search = $this->searchHelper->addSearchRestrictions( search: $dataObjectSearch, userPermission: UserPermissionTypes::OBJECTS->value, - workspaceType: DataObjectWorkspace::WORKSPACE_TYPE + workspaceType: DataObjectWorkspace::WORKSPACE_TYPE, + permissionType: $permissionType ); $searchResult = $this->searchHelper->performSearch( @@ -127,6 +131,6 @@ private function searchObjectById(int $id, ?User $user = null): ?DataObjectSearc $dataObjectSearch->setUser($user); } - return $this->search($dataObjectSearch)->getItems()[0] ?? null; + return $this->search($dataObjectSearch, PermissionTypes::VIEW)->getItems()[0] ?? null; } } diff --git a/src/Service/Search/SearchService/DataObject/DataObjectSearchServiceInterface.php b/src/Service/Search/SearchService/DataObject/DataObjectSearchServiceInterface.php index 8cb2386b..017cfe85 100644 --- a/src/Service/Search/SearchService/DataObject/DataObjectSearchServiceInterface.php +++ b/src/Service/Search/SearchService/DataObject/DataObjectSearchServiceInterface.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\DataObject; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Exception\DataObjectSearchException; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearchInterface; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\SearchResult\DataObjectSearchResult; @@ -27,7 +28,10 @@ interface DataObjectSearchServiceInterface /** * @throws DataObjectSearchException */ - public function search(DataObjectSearchInterface $dataObjectSearch): DataObjectSearchResult; + public function search( + DataObjectSearchInterface $dataObjectSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): DataObjectSearchResult; /** * @throws DataObjectSearchException diff --git a/src/Service/Search/SearchService/Document/DocumentSearchService.php b/src/Service/Search/SearchService/Document/DocumentSearchService.php index 2632dffd..661423b1 100644 --- a/src/Service/Search/SearchService/Document/DocumentSearchService.php +++ b/src/Service/Search/SearchService/Document/DocumentSearchService.php @@ -17,6 +17,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Document; use Exception; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\UserPermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Exception\DocumentSearchException; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Document\SearchResult\DocumentSearchResult; @@ -47,12 +48,15 @@ public function __construct( /** * @throws DocumentSearchException */ - public function search(SearchInterface $documentSearch): DocumentSearchResult - { + public function search( + SearchInterface $documentSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): DocumentSearchResult { $documentSearch = $this->searchHelper->addSearchRestrictions( search: $documentSearch, userPermission: UserPermissionTypes::DOCUMENTS->value, - workspaceType: DocumentWorkspace::WORKSPACE_TYPE + workspaceType: DocumentWorkspace::WORKSPACE_TYPE, + permissionType: $permissionType ); $searchResult = $this->searchHelper->performSearch( @@ -124,6 +128,6 @@ private function searchDocumentById(int $id, ?User $user = null): ?DocumentSearc $documentSearch->setUser($user); } - return $this->search($documentSearch)->getItems()[0] ?? null; + return $this->search($documentSearch, PermissionTypes::VIEW)->getItems()[0] ?? null; } } diff --git a/src/Service/Search/SearchService/Document/DocumentSearchServiceInterface.php b/src/Service/Search/SearchService/Document/DocumentSearchServiceInterface.php index 4673793d..73b9dd24 100644 --- a/src/Service/Search/SearchService/Document/DocumentSearchServiceInterface.php +++ b/src/Service/Search/SearchService/Document/DocumentSearchServiceInterface.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Document; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Exception\DocumentSearchException; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Document\SearchResult\DocumentSearchResult; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Document\SearchResult\DocumentSearchResultItem; @@ -27,7 +28,10 @@ interface DocumentSearchServiceInterface /** * @throws DocumentSearchException */ - public function search(SearchInterface $documentSearch): DocumentSearchResult; + public function search( + SearchInterface $documentSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): DocumentSearchResult; /** * @throws DocumentSearchException diff --git a/src/Service/Search/SearchService/Element/ElementSearchHelperInterface.php b/src/Service/Search/SearchService/Element/ElementSearchHelperInterface.php index 0278bb76..8bc10e49 100644 --- a/src/Service/Search/SearchService/Element/ElementSearchHelperInterface.php +++ b/src/Service/Search/SearchService/Element/ElementSearchHelperInterface.php @@ -15,6 +15,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Element; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\AdapterSearchInterface; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\SearchInterface; use Pimcore\Bundle\GenericDataIndexBundle\Model\SearchIndexAdapter\SearchResult; @@ -25,7 +26,10 @@ */ interface ElementSearchHelperInterface { - public function addSearchRestrictions(SearchInterface $search): SearchInterface; + public function addSearchRestrictions( + SearchInterface $search, + PermissionTypes $permissionType = PermissionTypes::LIST + ): SearchInterface; public function performSearch(SearchInterface $search, string $indexName): SearchResult; diff --git a/src/Service/Search/SearchService/Element/ElementSearchService.php b/src/Service/Search/SearchService/Element/ElementSearchService.php index 03df09f2..c38c6814 100644 --- a/src/Service/Search/SearchService/Element/ElementSearchService.php +++ b/src/Service/Search/SearchService/Element/ElementSearchService.php @@ -17,6 +17,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Element; use Exception; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\ElementType; use Pimcore\Bundle\GenericDataIndexBundle\Exception\ElementSearchException; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Element\SearchResult\ElementSearchResult; @@ -44,9 +45,11 @@ public function __construct( ) { } - public function search(SearchInterface $elementSearch): ElementSearchResult - { - $elementSearch = $this->searchHelper->addSearchRestrictions($elementSearch); + public function search( + SearchInterface $elementSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): ElementSearchResult { + $elementSearch = $this->searchHelper->addSearchRestrictions($elementSearch, $permissionType); $searchResult = $this->searchHelper->performSearch( $elementSearch, diff --git a/src/Service/Search/SearchService/Element/ElementSearchServiceInterface.php b/src/Service/Search/SearchService/Element/ElementSearchServiceInterface.php index b337da7a..7c3cbb2e 100644 --- a/src/Service/Search/SearchService/Element/ElementSearchServiceInterface.php +++ b/src/Service/Search/SearchService/Element/ElementSearchServiceInterface.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Element; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\ElementType; use Pimcore\Bundle\GenericDataIndexBundle\Exception\ElementSearchException; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Element\SearchResult\ElementSearchResult; @@ -28,7 +29,10 @@ interface ElementSearchServiceInterface /** * @throws ElementSearchException */ - public function search(SearchInterface $elementSearch): ElementSearchResult; + public function search( + SearchInterface $elementSearch, + PermissionTypes $permissionType = PermissionTypes::LIST + ): ElementSearchResult; /** * @throws ElementSearchException diff --git a/src/Service/Search/SearchService/Element/SearchHelper.php b/src/Service/Search/SearchService/Element/SearchHelper.php index a5c9776e..e1f4285f 100644 --- a/src/Service/Search/SearchService/Element/SearchHelper.php +++ b/src/Service/Search/SearchService/Element/SearchHelper.php @@ -45,8 +45,10 @@ public function __construct( ) { } - public function addSearchRestrictions(SearchInterface $search): SearchInterface - { + public function addSearchRestrictions( + SearchInterface $search, + PermissionTypes $permissionType = PermissionTypes::LIST + ): SearchInterface { $user = $search->getUser(); if (!$user) { return $search; @@ -55,7 +57,7 @@ public function addSearchRestrictions(SearchInterface $search): SearchInterface if (!$user->isAdmin()) { $search->addModifier(new ElementWorkspacesQuery( $user, - PermissionTypes::LIST->value + $permissionType->value )); } diff --git a/src/Service/Search/SearchService/SearchHelperInterface.php b/src/Service/Search/SearchService/SearchHelperInterface.php index efa201fb..44b1e068 100644 --- a/src/Service/Search/SearchService/SearchHelperInterface.php +++ b/src/Service/Search/SearchService/SearchHelperInterface.php @@ -16,6 +16,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService; +use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\ElementSearchResultItemInterface; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\SearchInterface; use Pimcore\Bundle\GenericDataIndexBundle\Model\SearchIndexAdapter\SearchResult; @@ -30,7 +31,8 @@ interface SearchHelperInterface public function addSearchRestrictions( SearchInterface $search, string $userPermission, - string $workspaceType + string $workspaceType, + PermissionTypes $permissionType ): SearchInterface; public function performSearch(SearchInterface $search, string $indexName): SearchResult;