Skip to content

Commit 25a7dd6

Browse files
authored
Merge pull request #4831 from nextcloud/fix/user-edit-groups-public-shares
fix(shares): guest users inherit edit_group
2 parents 50d32be + 4c73549 commit 25a7dd6

3 files changed

Lines changed: 11 additions & 6 deletions

File tree

lib/Listener/ShareLinkListener.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,11 @@ public function handle(Event $event): void {
4242
$loggedInUser = $this->permissionManager->loggedInUser();
4343

4444
if ($this->permissionManager->isEnabledForUser($owner)) {
45+
$updatable = (bool)($share->getPermissions() & \OCP\Constants::PERMISSION_UPDATE);
46+
$updatable = $updatable && $this->permissionManager->userCanEdit($owner);
47+
4548
$this->initialStateService->prepareParams(['userId' => $loggedInUser]);
46-
$this->initialStateService->provideCapabilities();
49+
$this->initialStateService->providePublicShare($updatable);
4750

4851
Util::addScript('richdocuments', 'richdocuments-viewer', 'viewer');
4952
Util::addScript('richdocuments', 'richdocuments-public', 'viewer');

lib/Service/InitialStateService.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ public function provideDocument(Wopi $wopi, array $params): void {
5858
$this->provideOptions();
5959
}
6060

61+
public function providePublicShare(?bool $userInEditGroups = true): void {
62+
$this->initialState->provideInitialState('userInEditGroups', $userInEditGroups);
63+
$this->provideCapabilities();
64+
}
65+
6166
public function prepareParams(array $params): array {
6267
$defaults = [
6368
'instanceId' => $this->config->getSystemValue('instanceid'),

src/public.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,15 @@ import {
1010
isDownloadHidden,
1111
} from './helpers/index.js'
1212
import { getCapabilities } from './services/capabilities.ts'
13-
import { getCurrentUser } from '@nextcloud/auth'
1413
import NewFileMenu from './view/NewFileMenu.js'
14+
import { loadState } from '@nextcloud/initial-state'
1515

1616
document.addEventListener('DOMContentLoaded', () => {
1717
if (!isPublic() || !OCA.Viewer) {
1818
return
1919
}
2020

21-
const userGroups = getCurrentUser()?.groups || []
22-
const editGroups = getCapabilities().config.edit_groups || []
23-
const editGroupsArray = Array.isArray(editGroups) ? editGroups : [editGroups]
24-
const userInEditGroups = editGroupsArray.some(group => userGroups.includes(group))
21+
const userInEditGroups = loadState('richdocuments', 'userInEditGroups', true)
2522

2623
if (OCA.Files && OCA.Files.fileActions && userInEditGroups) {
2724
OC.Plugins.register('OCA.Files.NewFileMenu', NewFileMenu)

0 commit comments

Comments
 (0)