diff --git a/lib/Listener/RegisterTemplateFileCreatorListener.php b/lib/Listener/RegisterTemplateFileCreatorListener.php index c538da96d5..1f42c8dc0b 100644 --- a/lib/Listener/RegisterTemplateFileCreatorListener.php +++ b/lib/Listener/RegisterTemplateFileCreatorListener.php @@ -34,7 +34,7 @@ public function handle(Event $event): void { return; } - if (!$this->permissionManager->isEnabledForUser() || empty($this->capabilitiesService->getCapabilities())) { + if (!$this->permissionManager->isEnabledForUser() || !$this->permissionManager->userCanEdit() || empty($this->capabilitiesService->getCapabilities())) { return; } diff --git a/tests/lib/Listener/RegisterTemplateFileCreatorListenerTest.php b/tests/lib/Listener/RegisterTemplateFileCreatorListenerTest.php index 562eb33e71..65d042c40b 100644 --- a/tests/lib/Listener/RegisterTemplateFileCreatorListenerTest.php +++ b/tests/lib/Listener/RegisterTemplateFileCreatorListenerTest.php @@ -53,6 +53,7 @@ public function testHandleDoesNotRegisterIfPermissionOrCapabilitiesMissing() { $event = $this->createMock(RegisterTemplateCreatorEvent::class); $event->method('getTemplateManager')->willReturn($this->templateManager); $this->permissionManager->method('isEnabledForUser')->willReturn(false); + $this->permissionManager->method('userCanEdit')->willReturn(true); $this->capabilitiesService->method('getCapabilities')->willReturn([]); $listener = new RegisterTemplateFileCreatorListener( @@ -70,6 +71,7 @@ public function testHandleRegistersTemplateFileCreators() { $event = $this->createMock(RegisterTemplateCreatorEvent::class); $event->method('getTemplateManager')->willReturn($this->templateManager); $this->permissionManager->method('isEnabledForUser')->willReturn(true); + $this->permissionManager->method('userCanEdit')->willReturn(true); $this->capabilitiesService->method('getCapabilities')->willReturn(['something']); $this->capabilitiesService->method('hasDrawSupport')->willReturn(true); $this->config->method('getAppValue')->willReturn('ooxml'); @@ -91,6 +93,7 @@ public function testHandleRegistersWithoutDrawSupport() { $event = $this->createMock(RegisterTemplateCreatorEvent::class); $event->method('getTemplateManager')->willReturn($this->templateManager); $this->permissionManager->method('isEnabledForUser')->willReturn(true); + $this->permissionManager->method('userCanEdit')->willReturn(true); $this->capabilitiesService->method('getCapabilities')->willReturn(['something']); $this->capabilitiesService->method('hasDrawSupport')->willReturn(false); $this->config->method('getAppValue')->willReturn('ooxml'); @@ -107,4 +110,22 @@ public function testHandleRegistersWithoutDrawSupport() { ); $listener->handle($event); } + + public function testHandleDoesNotRegisterIfUserCannotEdit() { + $event = $this->createMock(RegisterTemplateCreatorEvent::class); + $event->method('getTemplateManager')->willReturn($this->templateManager); + $this->permissionManager->method('isEnabledForUser')->willReturn(true); + $this->permissionManager->method('userCanEdit')->willReturn(false); + $this->capabilitiesService->method('getCapabilities')->willReturn(['something']); + + $listener = new RegisterTemplateFileCreatorListener( + $this->l10n, + $this->config, + $this->appManager, + $this->capabilitiesService, + $this->permissionManager + ); + $this->templateManager->expects($this->never())->method('registerTemplateFileCreator'); + $listener->handle($event); + } }