From 69cd8e2ce70a1415e93e0ec1520dd9dfd4a0bf1c Mon Sep 17 00:00:00 2001 From: Pawel Bujakowski Date: Thu, 3 Jan 2019 09:40:41 +0100 Subject: [PATCH] EZP-29833 : fixes permission check for content create action --- .../Menu/ContentCreateRightSidebarBuilder.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/lib/Menu/ContentCreateRightSidebarBuilder.php b/src/lib/Menu/ContentCreateRightSidebarBuilder.php index 67b72c1305..ba847fe828 100644 --- a/src/lib/Menu/ContentCreateRightSidebarBuilder.php +++ b/src/lib/Menu/ContentCreateRightSidebarBuilder.php @@ -10,6 +10,9 @@ use eZ\Publish\API\Repository\ContentTypeService; use eZ\Publish\API\Repository\LocationService; use eZ\Publish\API\Repository\PermissionResolver; +use eZ\Publish\API\Repository\Values\Content\Language; +use eZ\Publish\API\Repository\Values\Content\Location; +use eZ\Publish\API\Repository\Values\ContentType\ContentType; use EzSystems\EzPlatformAdminUi\Menu\Event\ConfigureMenuEvent; use JMS\TranslationBundle\Model\Message; use JMS\TranslationBundle\Translation\TranslationContainerInterface; @@ -97,12 +100,13 @@ public function createStructure(array $options): ItemInterface /** @var \Knp\Menu\ItemInterface|\Knp\Menu\ItemInterface[] $menu */ $menu = $this->factory->createItem('root'); - $contentCreateStruct = $this->contentService->newContentCreateStruct($contentType, $language->languageCode); + $contentCreateStruct = $this->createContentCreateStruct($parentLocation, $contentType, $language); $locationCreateStruct = $this->locationService->newLocationCreateStruct($parentLocation->id); $canPublish = $this->permissionResolver->canUser('content', 'publish', $contentCreateStruct, [$locationCreateStruct]); $canCreate = $this->permissionResolver->canUser('content', 'create', $contentCreateStruct, [$locationCreateStruct]) && $parentContentType->isContainer; $canPreview = $this->permissionResolver->canUser('content', 'versionread', $contentCreateStruct, [$locationCreateStruct]); + $publishAttributes = [ 'class' => self::BTN_TRIGGER_CLASS, 'data-click' => '#ezrepoforms_content_edit_publish', @@ -171,4 +175,19 @@ public static function getTranslationMessages(): array (new Message(self::ITEM__CANCEL, 'menu'))->setDesc('Cancel'), ]; } + + /** + * @param \eZ\Publish\API\Repository\Values\Content\Location $location + * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType + * @param \eZ\Publish\API\Repository\Values\Content\Language $language + * + * @return \eZ\Publish\API\Repository\Values\Content\ContentCreateStruct + */ + private function createContentCreateStruct(Location $location, ContentType $contentType, Language $language) + { + $contentCreateStruct = $this->contentService->newContentCreateStruct($contentType, $language->languageCode); + $contentCreateStruct->sectionId = $location->contentInfo->sectionId; + + return $contentCreateStruct; + } }