IONOS: fix: allow document creation only for users that can edit

Signed-off-by: Franziska Bath <franziska.bath@strato.de>
Co-authored-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
This commit is contained in:
Franziska Bath 2025-05-15 14:22:44 +02:00 committed by Mikhailo Matiyenko-Kupriyanov
parent 41c120abe5
commit deab95d3e2
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);
}
}