Skip to content

Commit a80ff72

Browse files
nfebenextcloud-command
authored andcommitted
feat(sharing): Make share permission in bundled edit configurable
Add config option shareapi_bundle_reshare_with_edit to include reshare permission in "Allow editing" bundle. Default is true to maintain backward compatibility. Signed-off-by: nfebe <fenn25.fn@gmail.com> Signed-off-by: Carl Schwan <carlschwan@kde.org> Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
1 parent 2a690fd commit a80ff72

22 files changed

+264
-39
lines changed

apps/files_sharing/lib/Capabilities.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
namespace OCA\Files_Sharing;
99

1010
use OC\Core\AppInfo\ConfigLexicon;
11+
use OCA\Files_Sharing\Config\ConfigLexicon as SharingConfigLexicon;
1112
use OCP\App\IAppManager;
1213
use OCP\Capabilities\ICapability;
1314
use OCP\Constants;
@@ -77,6 +78,7 @@ public function __construct(
7778
* },
7879
* },
7980
* default_permissions?: int,
81+
* exclude_reshare_from_edit?: bool,
8082
* federation: array{
8183
* outgoing: bool,
8284
* incoming: bool,
@@ -159,6 +161,7 @@ public function getCapabilities() {
159161
$res['group']['enabled'] = $this->shareManager->allowGroupSharing();
160162
$res['group']['expire_date']['enabled'] = true;
161163
$res['default_permissions'] = (int)$this->config->getAppValue('core', 'shareapi_default_permissions', (string)Constants::PERMISSION_ALL);
164+
$res['exclude_reshare_from_edit'] = $this->appConfig->getValueBool('files_sharing', SharingConfigLexicon::EXCLUDE_RESHARE_FROM_EDIT);
162165
}
163166

164167
//Federated sharing

apps/files_sharing/lib/Config/ConfigLexicon.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
class ConfigLexicon implements ILexicon {
2424
public const SHOW_FEDERATED_AS_INTERNAL = 'show_federated_shares_as_internal';
2525
public const SHOW_FEDERATED_TO_TRUSTED_AS_INTERNAL = 'show_federated_shares_to_trusted_servers_as_internal';
26+
public const EXCLUDE_RESHARE_FROM_EDIT = 'shareapi_exclude_reshare_from_edit';
2627

2728
public function getStrictness(): Strictness {
2829
return Strictness::IGNORE;
@@ -32,6 +33,7 @@ public function getAppConfigs(): array {
3233
return [
3334
new Entry(self::SHOW_FEDERATED_AS_INTERNAL, ValueType::BOOL, false, 'shows federated shares as internal shares', true),
3435
new Entry(self::SHOW_FEDERATED_TO_TRUSTED_AS_INTERNAL, ValueType::BOOL, false, 'shows federated shares to trusted servers as internal shares', true),
36+
new Entry(self::EXCLUDE_RESHARE_FROM_EDIT, ValueType::BOOL, false, 'Exclude reshare permission from "Allow editing" bundled permissions'),
3537
];
3638
}
3739

apps/files_sharing/openapi.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,9 @@
189189
"type": "integer",
190190
"format": "int64"
191191
},
192+
"exclude_reshare_from_edit": {
193+
"type": "boolean"
194+
},
192195
"federation": {
193196
"type": "object",
194197
"required": [

apps/files_sharing/src/components/SharingEntryQuickShareSelect.vue

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import DropdownIcon from 'vue-material-design-icons/TriangleSmallDown.vue'
4141
import IconTune from 'vue-material-design-icons/Tune.vue'
4242
import {
4343
ATOMIC_PERMISSIONS,
44-
BUNDLED_PERMISSIONS,
44+
getBundledPermissions,
4545
} from '../lib/SharePermissionsToolBox.js'
4646
import ShareDetails from '../mixins/ShareDetails.js'
4747
import SharesMixin from '../mixins/SharesMixin.js'
@@ -93,14 +93,19 @@ export default {
9393
return t('files_sharing', 'Custom permissions')
9494
},
9595
96+
bundledPermissions() {
97+
return getBundledPermissions(this.config.excludeReshareFromEdit)
98+
},
99+
96100
preSelectedOption() {
97101
// We remove the share permission for the comparison as it is not relevant for bundled permissions.
98102
const permissionsWithoutShare = this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE
99-
if (permissionsWithoutShare === BUNDLED_PERMISSIONS.READ_ONLY) {
103+
const basePermissions = getBundledPermissions(true)
104+
if (permissionsWithoutShare === basePermissions.READ_ONLY) {
100105
return this.canViewText
101-
} else if (permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL || permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL_FILE) {
106+
} else if (permissionsWithoutShare === basePermissions.ALL || permissionsWithoutShare === basePermissions.ALL_FILE) {
102107
return this.canEditText
103-
} else if (permissionsWithoutShare === BUNDLED_PERMISSIONS.FILE_DROP) {
108+
} else if (permissionsWithoutShare === basePermissions.FILE_DROP) {
104109
return this.fileDropText
105110
}
106111
@@ -140,14 +145,14 @@ export default {
140145
dropDownPermissionValue() {
141146
switch (this.selectedOption) {
142147
case this.canEditText:
143-
return this.isFolder ? BUNDLED_PERMISSIONS.ALL : BUNDLED_PERMISSIONS.ALL_FILE
148+
return this.isFolder ? this.bundledPermissions.ALL : this.bundledPermissions.ALL_FILE
144149
case this.fileDropText:
145-
return BUNDLED_PERMISSIONS.FILE_DROP
150+
return this.bundledPermissions.FILE_DROP
146151
case this.customPermissionsText:
147152
return 'custom'
148153
case this.canViewText:
149154
default:
150-
return BUNDLED_PERMISSIONS.READ_ONLY
155+
return this.bundledPermissions.READ_ONLY
151156
}
152157
},
153158
},

apps/files_sharing/src/lib/SharePermissionsToolBox.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,29 @@ export const ATOMIC_PERMISSIONS = {
1212
SHARE: 16,
1313
}
1414

15-
export const BUNDLED_PERMISSIONS = {
15+
const BUNDLED_PERMISSIONS = {
1616
READ_ONLY: ATOMIC_PERMISSIONS.READ,
1717
UPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,
1818
FILE_DROP: ATOMIC_PERMISSIONS.CREATE,
19-
ALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE,
20-
ALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ,
19+
ALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,
20+
ALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.SHARE,
21+
}
22+
23+
/**
24+
* Get bundled permissions based on config.
25+
*
26+
* @param {boolean} excludeShare - Whether to exclude SHARE permission from ALL and ALL_FILE bundles.
27+
* @return {object}
28+
*/
29+
export function getBundledPermissions(excludeShare = false) {
30+
if (excludeShare) {
31+
return {
32+
...BUNDLED_PERMISSIONS,
33+
ALL: BUNDLED_PERMISSIONS.ALL & ~ATOMIC_PERMISSIONS.SHARE,
34+
ALL_FILE: BUNDLED_PERMISSIONS.ALL_FILE & ~ATOMIC_PERMISSIONS.SHARE,
35+
}
36+
}
37+
return BUNDLED_PERMISSIONS
2138
}
2239

2340
/**

apps/files_sharing/src/lib/SharePermissionsToolBox.spec.js

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,23 @@ import { describe, expect, test } from 'vitest'
66
import {
77
addPermissions,
88
ATOMIC_PERMISSIONS,
9-
BUNDLED_PERMISSIONS,
109
canTogglePermissions,
10+
getBundledPermissions,
1111
hasPermissions,
1212
permissionsSetIsValid,
1313
subtractPermissions,
1414
togglePermissions,
1515
} from '../lib/SharePermissionsToolBox.js'
1616

17+
const BUNDLED_PERMISSIONS = getBundledPermissions()
18+
1719
describe('SharePermissionsToolBox', () => {
1820
test('Adding permissions', () => {
1921
expect(addPermissions(ATOMIC_PERMISSIONS.NONE, ATOMIC_PERMISSIONS.NONE)).toBe(ATOMIC_PERMISSIONS.NONE)
2022
expect(addPermissions(ATOMIC_PERMISSIONS.NONE, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.READ)
2123
expect(addPermissions(ATOMIC_PERMISSIONS.READ, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.READ)
2224
expect(addPermissions(ATOMIC_PERMISSIONS.READ, ATOMIC_PERMISSIONS.UPDATE)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE)
23-
expect(addPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE)).toBe(BUNDLED_PERMISSIONS.ALL)
25+
expect(addPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)).toBe(BUNDLED_PERMISSIONS.ALL)
2426
expect(addPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.READ)).toBe(BUNDLED_PERMISSIONS.ALL)
2527
expect(addPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.NONE)).toBe(BUNDLED_PERMISSIONS.ALL)
2628
})
@@ -32,7 +34,7 @@ describe('SharePermissionsToolBox', () => {
3234
expect(subtractPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.UPDATE)).toBe(ATOMIC_PERMISSIONS.READ)
3335
expect(subtractPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE)
3436
expect(subtractPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE)).toBe(ATOMIC_PERMISSIONS.READ)
35-
expect(subtractPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE)
37+
expect(subtractPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)
3638
})
3739

3840
test('Has permissions', () => {
@@ -45,8 +47,8 @@ describe('SharePermissionsToolBox', () => {
4547
})
4648

4749
test('Toggle permissions', () => {
48-
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE)).toBe(ATOMIC_PERMISSIONS.NONE)
49-
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.FILE_DROP)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE)
50+
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE)).toBe(ATOMIC_PERMISSIONS.SHARE)
51+
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.FILE_DROP)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)
5052
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.NONE)).toBe(BUNDLED_PERMISSIONS.ALL)
5153
expect(togglePermissions(ATOMIC_PERMISSIONS.NONE, BUNDLED_PERMISSIONS.ALL)).toBe(BUNDLED_PERMISSIONS.ALL)
5254
expect(togglePermissions(ATOMIC_PERMISSIONS.READ, BUNDLED_PERMISSIONS.ALL)).toBe(BUNDLED_PERMISSIONS.ALL)
@@ -76,4 +78,70 @@ describe('SharePermissionsToolBox', () => {
7678
expect(canTogglePermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE)).toBe(true)
7779
expect(canTogglePermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE, ATOMIC_PERMISSIONS.CREATE)).toBe(true)
7880
})
81+
82+
test('Get bundled permissions with SHARE included (default)', () => {
83+
const permissions = getBundledPermissions()
84+
expect(permissions.READ_ONLY).toBe(BUNDLED_PERMISSIONS.READ_ONLY)
85+
expect(permissions.FILE_DROP).toBe(BUNDLED_PERMISSIONS.FILE_DROP)
86+
expect(permissions.UPLOAD_AND_UPDATE).toBe(BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE)
87+
expect(permissions.ALL).toBe(BUNDLED_PERMISSIONS.ALL)
88+
expect(permissions.ALL_FILE).toBe(BUNDLED_PERMISSIONS.ALL_FILE)
89+
expect(permissions.ALL).toBe(31)
90+
expect(permissions.ALL_FILE).toBe(19)
91+
expect(hasPermissions(permissions.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(true)
92+
expect(hasPermissions(permissions.ALL_FILE, ATOMIC_PERMISSIONS.SHARE)).toBe(true)
93+
})
94+
95+
test('Get bundled permissions without SHARE (excludeShare=true)', () => {
96+
const permissions = getBundledPermissions(true)
97+
expect(permissions.READ_ONLY).toBe(BUNDLED_PERMISSIONS.READ_ONLY)
98+
expect(permissions.FILE_DROP).toBe(BUNDLED_PERMISSIONS.FILE_DROP)
99+
expect(permissions.UPLOAD_AND_UPDATE).toBe(BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE)
100+
expect(permissions.ALL).toBe(BUNDLED_PERMISSIONS.ALL & ~ATOMIC_PERMISSIONS.SHARE)
101+
expect(permissions.ALL_FILE).toBe(BUNDLED_PERMISSIONS.ALL_FILE & ~ATOMIC_PERMISSIONS.SHARE)
102+
expect(permissions.ALL).toBe(15)
103+
expect(permissions.ALL_FILE).toBe(3)
104+
expect(hasPermissions(permissions.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(false)
105+
expect(hasPermissions(permissions.ALL_FILE, ATOMIC_PERMISSIONS.SHARE)).toBe(false)
106+
})
107+
108+
test('Operations with bundled permissions including SHARE', () => {
109+
const permissionsWithShare = getBundledPermissions(false)
110+
const permissionsWithoutShare = getBundledPermissions(true)
111+
112+
// Adding permissions to ALL with SHARE should preserve SHARE
113+
expect(addPermissions(permissionsWithShare.ALL, ATOMIC_PERMISSIONS.READ)).toBe(permissionsWithShare.ALL)
114+
115+
// Subtracting READ from ALL with SHARE should leave UPDATE | CREATE | DELETE | SHARE
116+
expect(subtractPermissions(permissionsWithShare.ALL, ATOMIC_PERMISSIONS.READ))
117+
.toBe(ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)
118+
119+
// Toggle UPLOAD_AND_UPDATE from ALL with SHARE should leave only SHARE
120+
expect(togglePermissions(permissionsWithShare.ALL, BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE))
121+
.toBe(ATOMIC_PERMISSIONS.SHARE)
122+
123+
// Toggle FILE_DROP from ALL with SHARE
124+
expect(togglePermissions(permissionsWithShare.ALL, BUNDLED_PERMISSIONS.FILE_DROP))
125+
.toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)
126+
127+
// BUNDLED_PERMISSIONS.ALL already includes SHARE
128+
expect(BUNDLED_PERMISSIONS.ALL).toBe(permissionsWithShare.ALL)
129+
130+
// Subtracting SHARE from ALL with SHARE should equal ALL without SHARE
131+
expect(subtractPermissions(permissionsWithShare.ALL, ATOMIC_PERMISSIONS.SHARE)).toBe(permissionsWithoutShare.ALL)
132+
})
133+
134+
test('Operations with bundled permissions for files including SHARE', () => {
135+
const permissionsWithShare = getBundledPermissions(false)
136+
const permissionsWithoutShare = getBundledPermissions(true)
137+
138+
// ALL_FILE with SHARE should be READ | UPDATE | SHARE
139+
expect(permissionsWithShare.ALL_FILE).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.SHARE)
140+
141+
// Subtracting SHARE from ALL_FILE with SHARE should equal ALL_FILE without SHARE
142+
expect(subtractPermissions(permissionsWithShare.ALL_FILE, ATOMIC_PERMISSIONS.SHARE)).toBe(permissionsWithoutShare.ALL_FILE)
143+
144+
// BUNDLED_PERMISSIONS.ALL_FILE already includes SHARE
145+
expect(BUNDLED_PERMISSIONS.ALL_FILE).toBe(permissionsWithShare.ALL_FILE)
146+
})
79147
})

apps/files_sharing/src/mixins/SharesMixin.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import PQueue from 'p-queue'
1212
import { fetchNode } from '../../../files/src/services/WebdavClient.ts'
1313
import {
1414
ATOMIC_PERMISSIONS,
15-
BUNDLED_PERMISSIONS,
15+
getBundledPermissions,
1616
} from '../lib/SharePermissionsToolBox.js'
1717
import Share from '../models/Share.ts'
1818
import Config from '../services/ConfigService.ts'
@@ -138,11 +138,12 @@ export default {
138138
return this.config.isDefaultInternalExpireDateEnforced
139139
},
140140
hasCustomPermissions() {
141+
const basePermissions = getBundledPermissions(true)
141142
const bundledPermissions = [
142-
BUNDLED_PERMISSIONS.ALL,
143-
BUNDLED_PERMISSIONS.ALL_FILE,
144-
BUNDLED_PERMISSIONS.READ_ONLY,
145-
BUNDLED_PERMISSIONS.FILE_DROP,
143+
basePermissions.ALL,
144+
basePermissions.ALL_FILE,
145+
basePermissions.READ_ONLY,
146+
basePermissions.FILE_DROP,
146147
]
147148
const permissionsWithoutShare = this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE
148149
return !bundledPermissions.includes(permissionsWithoutShare)

apps/files_sharing/src/services/ConfigService.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ type FileSharingCapabilities = {
5353
}
5454
}
5555
default_permissions: number
56+
exclude_reshare_from_edit: boolean
5657
federation: {
5758
outgoing: boolean
5859
incoming: boolean
@@ -103,6 +104,13 @@ export default class Config {
103104
return this._capabilities.files_sharing?.default_permissions
104105
}
105106

107+
/**
108+
* Should SHARE permission be excluded from "Allow editing" bundled permissions
109+
*/
110+
get excludeReshareFromEdit(): boolean {
111+
return this._capabilities.files_sharing?.exclude_reshare_from_edit === true
112+
}
113+
106114
/**
107115
* Is public upload allowed on link shares ?
108116
* This covers File request and Full upload/edit option.

apps/files_sharing/src/views/SharingDetailsTab.vue

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ import SidebarTabExternalAction from '../components/SidebarTabExternal/SidebarTa
331331
import SidebarTabExternalActionLegacy from '../components/SidebarTabExternal/SidebarTabExternalActionLegacy.vue'
332332
import {
333333
ATOMIC_PERMISSIONS,
334-
BUNDLED_PERMISSIONS,
334+
getBundledPermissions,
335335
hasPermissions,
336336
} from '../lib/SharePermissionsToolBox.js'
337337
import ShareRequests from '../mixins/ShareRequests.js'
@@ -390,12 +390,11 @@ export default {
390390
data() {
391391
return {
392392
writeNoteToRecipientIsChecked: false,
393-
sharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),
394-
revertSharingPermission: BUNDLED_PERMISSIONS.ALL.toString(),
393+
sharingPermission: getBundledPermissions().ALL.toString(),
394+
revertSharingPermission: getBundledPermissions().ALL.toString(),
395395
setCustomPermissions: false,
396396
passwordError: false,
397397
advancedSectionAccordionExpanded: false,
398-
bundledPermissions: BUNDLED_PERMISSIONS,
399398
isFirstComponentLoad: true,
400399
test: false,
401400
creating: false,
@@ -443,6 +442,10 @@ export default {
443442
}
444443
},
445444
445+
bundledPermissions() {
446+
return getBundledPermissions(this.config.excludeReshareFromEdit)
447+
},
448+
446449
allPermissions() {
447450
return this.isFolder ? this.bundledPermissions.ALL.toString() : this.bundledPermissions.ALL_FILE.toString()
448451
},
@@ -1022,9 +1025,10 @@ export default {
10221025
if (this.isNewShare) {
10231026
const defaultPermissions = this.config.defaultPermissions
10241027
const permissionsWithoutShare = defaultPermissions & ~ATOMIC_PERMISSIONS.SHARE
1025-
if (permissionsWithoutShare === BUNDLED_PERMISSIONS.READ_ONLY
1026-
|| permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL
1027-
|| permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL_FILE) {
1028+
const basePermissions = getBundledPermissions(true)
1029+
if (permissionsWithoutShare === basePermissions.READ_ONLY
1030+
|| permissionsWithoutShare === basePermissions.ALL
1031+
|| permissionsWithoutShare === basePermissions.ALL_FILE) {
10281032
this.sharingPermission = permissionsWithoutShare.toString()
10291033
} else {
10301034
this.sharingPermission = 'custom'
@@ -1075,9 +1079,9 @@ export default {
10751079
this.share.permissions = sharePermissionsSet
10761080
}
10771081
1078-
if (!this.isFolder && this.share.permissions === BUNDLED_PERMISSIONS.ALL) {
1082+
if (!this.isFolder && this.share.permissions === this.bundledPermissions.ALL) {
10791083
// It's not possible to create an existing file.
1080-
this.share.permissions = BUNDLED_PERMISSIONS.ALL_FILE
1084+
this.share.permissions = this.bundledPermissions.ALL_FILE
10811085
}
10821086
if (!this.writeNoteToRecipientIsChecked) {
10831087
this.share.note = ''

0 commit comments

Comments
 (0)