Skip to content

Commit b128361

Browse files
authored
[BC] Change permission checks to view for searchById (#222)
* Change permission checks, update interfaces, introduce default parameter values * Apply php-cs-fixer changes --------- Co-authored-by: mattamon <[email protected]>
1 parent 7a62442 commit b128361

12 files changed

+66
-26
lines changed

src/Service/Search/SearchService/AbstractSearchHelper.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ public function __construct(
4646
public function addSearchRestrictions(
4747
SearchInterface $search,
4848
string $userPermission,
49-
string $workspaceType
49+
string $workspaceType,
50+
PermissionTypes $permissionType = PermissionTypes::LIST
5051
): SearchInterface {
5152
$user = $search->getUser();
5253
if (!$user) {
@@ -58,7 +59,7 @@ public function addSearchRestrictions(
5859
$search->addModifier(new WorkspaceQuery(
5960
$workspaceType,
6061
$user,
61-
PermissionTypes::LIST->value
62+
$permissionType->value
6263
));
6364
}
6465

src/Service/Search/SearchService/Asset/AssetSearchService.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Asset;
1818

1919
use Exception;
20+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\UserPermissionTypes;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Exception\AssetSearchException;
2223
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\AssetSearchResult;
@@ -47,12 +48,15 @@ public function __construct(
4748
/**
4849
* @throws AssetSearchException
4950
*/
50-
public function search(SearchInterface $assetSearch): AssetSearchResult
51-
{
51+
public function search(
52+
SearchInterface $assetSearch,
53+
PermissionTypes $permissionType = PermissionTypes::LIST
54+
): AssetSearchResult {
5255
$assetSearch = $this->searchHelper->addSearchRestrictions(
5356
search: $assetSearch,
5457
userPermission: UserPermissionTypes::ASSETS->value,
55-
workspaceType: AssetWorkspace::WORKSPACE_TYPE
58+
workspaceType: AssetWorkspace::WORKSPACE_TYPE,
59+
permissionType: $permissionType
5660
);
5761

5862
$searchResult = $this->searchHelper->performSearch(
@@ -124,6 +128,6 @@ private function searchAssetById(int $id, ?User $user = null): ?AssetSearchResul
124128
$assetSearch->setUser($user);
125129
}
126130

127-
return $this->search($assetSearch)->getItems()[0] ?? null;
131+
return $this->search($assetSearch, PermissionTypes::VIEW)->getItems()[0] ?? null;
128132
}
129133
}

src/Service/Search/SearchService/Asset/AssetSearchServiceInterface.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Asset;
1818

19+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
1920
use Pimcore\Bundle\GenericDataIndexBundle\Exception\AssetSearchException;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\AssetSearchResult;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\AssetSearchResultItem;
@@ -27,7 +28,10 @@ interface AssetSearchServiceInterface
2728
/**
2829
* @throws AssetSearchException
2930
*/
30-
public function search(SearchInterface $assetSearch): AssetSearchResult;
31+
public function search(
32+
SearchInterface $assetSearch,
33+
PermissionTypes $permissionType = PermissionTypes::LIST
34+
): AssetSearchResult;
3135

3236
/**
3337
* @throws AssetSearchException

src/Service/Search/SearchService/DataObject/DataObjectSearchService.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\DataObject;
1818

1919
use Exception;
20+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\UserPermissionTypes;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\IndexName;
2223
use Pimcore\Bundle\GenericDataIndexBundle\Exception\DataObjectSearchException;
@@ -48,14 +49,17 @@ public function __construct(
4849
/**
4950
* @throws DataObjectSearchException
5051
*/
51-
public function search(DataObjectSearchInterface $dataObjectSearch): DataObjectSearchResult
52-
{
52+
public function search(
53+
DataObjectSearchInterface $dataObjectSearch,
54+
PermissionTypes $permissionType = PermissionTypes::LIST
55+
): DataObjectSearchResult {
5356
$indexContext = $dataObjectSearch->getClassDefinition() ?: IndexName::DATA_OBJECT->value;
5457

5558
$search = $this->searchHelper->addSearchRestrictions(
5659
search: $dataObjectSearch,
5760
userPermission: UserPermissionTypes::OBJECTS->value,
58-
workspaceType: DataObjectWorkspace::WORKSPACE_TYPE
61+
workspaceType: DataObjectWorkspace::WORKSPACE_TYPE,
62+
permissionType: $permissionType
5963
);
6064

6165
$searchResult = $this->searchHelper->performSearch(
@@ -127,6 +131,6 @@ private function searchObjectById(int $id, ?User $user = null): ?DataObjectSearc
127131
$dataObjectSearch->setUser($user);
128132
}
129133

130-
return $this->search($dataObjectSearch)->getItems()[0] ?? null;
134+
return $this->search($dataObjectSearch, PermissionTypes::VIEW)->getItems()[0] ?? null;
131135
}
132136
}

src/Service/Search/SearchService/DataObject/DataObjectSearchServiceInterface.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\DataObject;
1818

19+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
1920
use Pimcore\Bundle\GenericDataIndexBundle\Exception\DataObjectSearchException;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearchInterface;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\SearchResult\DataObjectSearchResult;
@@ -27,7 +28,10 @@ interface DataObjectSearchServiceInterface
2728
/**
2829
* @throws DataObjectSearchException
2930
*/
30-
public function search(DataObjectSearchInterface $dataObjectSearch): DataObjectSearchResult;
31+
public function search(
32+
DataObjectSearchInterface $dataObjectSearch,
33+
PermissionTypes $permissionType = PermissionTypes::LIST
34+
): DataObjectSearchResult;
3135

3236
/**
3337
* @throws DataObjectSearchException

src/Service/Search/SearchService/Document/DocumentSearchService.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Document;
1818

1919
use Exception;
20+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\UserPermissionTypes;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Exception\DocumentSearchException;
2223
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Document\SearchResult\DocumentSearchResult;
@@ -47,12 +48,15 @@ public function __construct(
4748
/**
4849
* @throws DocumentSearchException
4950
*/
50-
public function search(SearchInterface $documentSearch): DocumentSearchResult
51-
{
51+
public function search(
52+
SearchInterface $documentSearch,
53+
PermissionTypes $permissionType = PermissionTypes::LIST
54+
): DocumentSearchResult {
5255
$documentSearch = $this->searchHelper->addSearchRestrictions(
5356
search: $documentSearch,
5457
userPermission: UserPermissionTypes::DOCUMENTS->value,
55-
workspaceType: DocumentWorkspace::WORKSPACE_TYPE
58+
workspaceType: DocumentWorkspace::WORKSPACE_TYPE,
59+
permissionType: $permissionType
5660
);
5761

5862
$searchResult = $this->searchHelper->performSearch(
@@ -124,6 +128,6 @@ private function searchDocumentById(int $id, ?User $user = null): ?DocumentSearc
124128
$documentSearch->setUser($user);
125129
}
126130

127-
return $this->search($documentSearch)->getItems()[0] ?? null;
131+
return $this->search($documentSearch, PermissionTypes::VIEW)->getItems()[0] ?? null;
128132
}
129133
}

src/Service/Search/SearchService/Document/DocumentSearchServiceInterface.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Document;
1818

19+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
1920
use Pimcore\Bundle\GenericDataIndexBundle\Exception\DocumentSearchException;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Document\SearchResult\DocumentSearchResult;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Document\SearchResult\DocumentSearchResultItem;
@@ -27,7 +28,10 @@ interface DocumentSearchServiceInterface
2728
/**
2829
* @throws DocumentSearchException
2930
*/
30-
public function search(SearchInterface $documentSearch): DocumentSearchResult;
31+
public function search(
32+
SearchInterface $documentSearch,
33+
PermissionTypes $permissionType = PermissionTypes::LIST
34+
): DocumentSearchResult;
3135

3236
/**
3337
* @throws DocumentSearchException

src/Service/Search/SearchService/Element/ElementSearchHelperInterface.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Element;
1717

18+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
1819
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\AdapterSearchInterface;
1920
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\SearchInterface;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Model\SearchIndexAdapter\SearchResult;
@@ -25,7 +26,10 @@
2526
*/
2627
interface ElementSearchHelperInterface
2728
{
28-
public function addSearchRestrictions(SearchInterface $search): SearchInterface;
29+
public function addSearchRestrictions(
30+
SearchInterface $search,
31+
PermissionTypes $permissionType = PermissionTypes::LIST
32+
): SearchInterface;
2933

3034
public function performSearch(SearchInterface $search, string $indexName): SearchResult;
3135

src/Service/Search/SearchService/Element/ElementSearchService.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Element;
1818

1919
use Exception;
20+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\ElementType;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Exception\ElementSearchException;
2223
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Element\SearchResult\ElementSearchResult;
@@ -44,9 +45,11 @@ public function __construct(
4445
) {
4546
}
4647

47-
public function search(SearchInterface $elementSearch): ElementSearchResult
48-
{
49-
$elementSearch = $this->searchHelper->addSearchRestrictions($elementSearch);
48+
public function search(
49+
SearchInterface $elementSearch,
50+
PermissionTypes $permissionType = PermissionTypes::LIST
51+
): ElementSearchResult {
52+
$elementSearch = $this->searchHelper->addSearchRestrictions($elementSearch, $permissionType);
5053

5154
$searchResult = $this->searchHelper->performSearch(
5255
$elementSearch,

src/Service/Search/SearchService/Element/ElementSearchServiceInterface.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
namespace Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Element;
1818

19+
use Pimcore\Bundle\GenericDataIndexBundle\Enum\Permission\PermissionTypes;
1920
use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\ElementType;
2021
use Pimcore\Bundle\GenericDataIndexBundle\Exception\ElementSearchException;
2122
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Element\SearchResult\ElementSearchResult;
@@ -28,7 +29,10 @@ interface ElementSearchServiceInterface
2829
/**
2930
* @throws ElementSearchException
3031
*/
31-
public function search(SearchInterface $elementSearch): ElementSearchResult;
32+
public function search(
33+
SearchInterface $elementSearch,
34+
PermissionTypes $permissionType = PermissionTypes::LIST
35+
): ElementSearchResult;
3236

3337
/**
3438
* @throws ElementSearchException

0 commit comments

Comments
 (0)