Skip to content

Commit

Permalink
[BC] Change permission checks to view for searchById (#222)
Browse files Browse the repository at this point in the history
* Change permission checks, update interfaces, introduce default parameter values

* Apply php-cs-fixer changes

---------

Co-authored-by: mattamon <mattamon@users.noreply.github.com>
  • Loading branch information
mattamon and mattamon authored Oct 3, 2024
1 parent 7a62442 commit b128361
Show file tree
Hide file tree
Showing 12 changed files with 66 additions and 26 deletions.
5 changes: 3 additions & 2 deletions src/Service/Search/SearchService/AbstractSearchHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -58,7 +59,7 @@ public function addSearchRestrictions(
$search->addModifier(new WorkspaceQuery(
$workspaceType,
$user,
PermissionTypes::LIST->value
$permissionType->value
));
}

Expand Down
12 changes: 8 additions & 4 deletions src/Service/Search/SearchService/Asset/AssetSearchService.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
8 changes: 5 additions & 3 deletions src/Service/Search/SearchService/Element/SearchHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -55,7 +57,7 @@ public function addSearchRestrictions(SearchInterface $search): SearchInterface
if (!$user->isAdmin()) {
$search->addModifier(new ElementWorkspacesQuery(
$user,
PermissionTypes::LIST->value
$permissionType->value
));
}

Expand Down
4 changes: 3 additions & 1 deletion src/Service/Search/SearchService/SearchHelperInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down

0 comments on commit b128361

Please sign in to comment.