From 953b454e3abba7eba97db7da4265bcfd051a7c91 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 | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/lib/Menu/ContentCreateRightSidebarBuilder.php b/src/lib/Menu/ContentCreateRightSidebarBuilder.php index 67b72c1305..6ee0e7a120 100644 --- a/src/lib/Menu/ContentCreateRightSidebarBuilder.php +++ b/src/lib/Menu/ContentCreateRightSidebarBuilder.php @@ -10,6 +10,10 @@ 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\ContentCreateStruct; +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 +101,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 +176,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 + { + $contentCreateStruct = $this->contentService->newContentCreateStruct($contentType, $language->languageCode); + $contentCreateStruct->sectionId = $location->contentInfo->sectionId; + + return $contentCreateStruct; + } }