Merge pull request #4807 from IONOS-Productivity/fix/shares-disable-doc-creation

fix: allow document creation only for users that can edit
This commit is contained in:
Elizabeth Danzberger 2025-06-12 13:46:55 +00:00 committed by GitHub
commit 8101c1a683
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 1 deletions

View file

@ -34,7 +34,7 @@ class RegisterTemplateFileCreatorListener implements IEventListener {
return;
}
if (!$this->permissionManager->isEnabledForUser() || empty($this->capabilitiesService->getCapabilities())) {
if (!$this->permissionManager->isEnabledForUser() || !$this->permissionManager->userCanEdit() || empty($this->capabilitiesService->getCapabilities())) {
return;
}

View file

@ -53,6 +53,7 @@ class RegisterTemplateFileCreatorListenerTest extends TestCase {
$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 @@ class RegisterTemplateFileCreatorListenerTest extends TestCase {
$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 @@ class RegisterTemplateFileCreatorListenerTest extends TestCase {
$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 @@ class RegisterTemplateFileCreatorListenerTest extends TestCase {
);
$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);
}
}