Skip to content

Commit fd1eca0

Browse files
committed
Merge branch '2025.4' into 3207-translations-v2
2 parents 8533dc4 + 3eaf69a commit fd1eca0

5 files changed

Lines changed: 26 additions & 8 deletions

File tree

composer.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
"prefer-stable": true,
1818
"minimum-stability": "dev",
1919
"require": {
20-
"php": "~8.3.0 || ~8.4.0 || ~8.5.0",
20+
"php": "~8.3.0 || ~8.4.0",
2121
"league/csv": "^9.27",
2222
"nesbot/carbon": "^3.8.4",
23-
"pimcore/static-resolver-bundle": "^3.5.0 || ^2026.1",
24-
"pimcore/generic-data-index-bundle": "^2.4.0 || ^2026.1",
25-
"pimcore/pimcore": "^12.3 || ^2026.1",
23+
"pimcore/static-resolver-bundle": "^3.5.0 ",
24+
"pimcore/generic-data-index-bundle": "^2.4.0",
25+
"pimcore/pimcore": "^12.3",
2626
"zircote/swagger-php": "^4.8 || ^5.0",
2727
"ext-zip": "*",
2828
"symfony/mercure": "^0.6.5",
@@ -66,7 +66,7 @@
6666
},
6767
"extra": {
6868
"branch-alias": {
69-
"dev-1.x": "1.0.x-dev"
69+
"dev-2025.4": "1.x-dev"
7070
},
7171
"pimcore": {
7272
"bundles": [

doc/02_Installation_and_Configuration/README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ security:
3232
firewalls:
3333
pimcore_studio: '%pimcore_studio_backend.firewall_settings%'
3434
access_control:
35-
- { path: ^/pimcore-studio/api/(docs|docs/json|translations|user/reset-password)$, roles: PUBLIC_ACCESS }
35+
- {
36+
path: ^/pimcore-studio/api/(docs|docs/json|translations|user/reset-password|setting/admin/thumbnail)$, roles: PUBLIC_ACCESS
37+
}
3638
- { path: ^/pimcore-studio/api, roles: ROLE_PIMCORE_USER }
3739
```
3840
@@ -48,7 +50,9 @@ security:
4850
pimcore_mcp: '%pimcore_studio_backend.mcp_firewall_settings%'
4951
pimcore_studio: '%pimcore_studio_backend.firewall_settings%'
5052
access_control:
51-
- { path: ^/pimcore-studio/api/(docs|docs/json|translations|user/reset-password)$, roles: PUBLIC_ACCESS }
53+
- {
54+
path: ^/pimcore-studio/api/(docs|docs/json|translations|user/reset-password|setting/admin/thumbnail)$, roles: PUBLIC_ACCESS
55+
}
5256
- { path: ^/pimcore-studio/api, roles: ROLE_PIMCORE_USER }
5357
- { path: ^/pimcore-mcp/, roles: ROLE_PIMCORE_USER }
5458
```

src/Gdpr/Provider/AssetsProvider.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,17 @@
1717
use Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\AssetQueryProviderInterface;
1818
use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface;
1919
use Pimcore\Bundle\StudioBackendBundle\DataIndex\Service\AssetSearchServiceInterface;
20+
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\ForbiddenException;
2021
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException;
2122
use Pimcore\Bundle\StudioBackendBundle\Filter\MappedParameter\FilterParameter;
2223
use Pimcore\Bundle\StudioBackendBundle\Gdpr\Provider\Legacy\AssetExporterInterface;
2324
use Pimcore\Bundle\StudioBackendBundle\Gdpr\Schema\GdprDataRow;
2425
use Pimcore\Bundle\StudioBackendBundle\Response\Collection;
26+
use Pimcore\Bundle\StudioBackendBundle\Util\Constant\ElementPermissions;
2527
use Pimcore\Bundle\StudioBackendBundle\Util\Constant\UserPermissions;
2628
use Pimcore\Model\Asset;
2729
use Symfony\Component\HttpFoundation\Response;
30+
use function sprintf;
2831

2932
/**
3033
* @internal
@@ -130,6 +133,10 @@ public function getSingleItemForDownload(int $id): Response
130133
throw new NotFoundException('Asset Not Found', $id);
131134
}
132135

136+
if (!$asset->isAllowed(ElementPermissions::VIEW_PERMISSION)) {
137+
throw new ForbiddenException(sprintf('Access Denied for asset with id "%d".', $asset->getId()));
138+
}
139+
133140
return $this->assetExporter->doExportData($asset);
134141
}
135142

src/Gdpr/Provider/DataObjectProvider.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,17 @@
1717
use Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\DataObjectQueryProviderInterface;
1818
use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface;
1919
use Pimcore\Bundle\StudioBackendBundle\DataIndex\Service\DataObjectSearchServiceInterface;
20+
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\ForbiddenException;
2021
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\NotFoundException;
2122
use Pimcore\Bundle\StudioBackendBundle\Filter\MappedParameter\FilterParameter;
2223
use Pimcore\Bundle\StudioBackendBundle\Gdpr\Provider\Legacy\ObjectExporterInterface;
2324
use Pimcore\Bundle\StudioBackendBundle\Gdpr\Schema\GdprDataRow;
2425
use Pimcore\Bundle\StudioBackendBundle\Response\Collection;
26+
use Pimcore\Bundle\StudioBackendBundle\Util\Constant\ElementPermissions;
2527
use Pimcore\Bundle\StudioBackendBundle\Util\Constant\UserPermissions;
2628
use Pimcore\Model\DataObject;
2729
use Pimcore\Model\DataObject\Concrete;
30+
use function sprintf;
2831

2932
/**
3033
* @internal
@@ -132,6 +135,10 @@ public function getSingleItemForDownload(int $id): array
132135
throw new NotFoundException('Requested object is not a Concrete data object', $id);
133136
}
134137

138+
if (!$object->isAllowed(ElementPermissions::VIEW_PERMISSION)) {
139+
throw new ForbiddenException(sprintf('Access Denied for object with id "%d".', $object->getId()));
140+
}
141+
135142
$export = [
136143
'id' => $object->getId(),
137144
'fullPath' => $object->getFullPath(),

src/Gdpr/Provider/PimcoreUserProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,6 @@ public function getSortPriority(): int
213213
*/
214214
public function getRequiredPermissions(): array
215215
{
216-
return [UserPermissions::PIMCORE_USER->value];
216+
return [UserPermissions::USER_MANAGEMENT->value];
217217
}
218218
}

0 commit comments

Comments
 (0)