mirror of
https://github.com/nextcloud/server.git
synced 2026-04-22 06:37:56 -04:00
Merge pull request #57631 from nextcloud/fix/remove-share-permission-from-allow-editing
feat(sharing): remove share permission from "Allow editing" default
This commit is contained in:
commit
0e515dbe96
18 changed files with 32 additions and 19 deletions
|
|
@ -95,11 +95,12 @@ export default {
|
|||
|
||||
preSelectedOption() {
|
||||
// We remove the share permission for the comparison as it is not relevant for bundled permissions.
|
||||
if ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.READ_ONLY) {
|
||||
const permissionsWithoutShare = this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE
|
||||
if (permissionsWithoutShare === BUNDLED_PERMISSIONS.READ_ONLY) {
|
||||
return this.canViewText
|
||||
} else if (this.share.permissions === BUNDLED_PERMISSIONS.ALL || this.share.permissions === BUNDLED_PERMISSIONS.ALL_FILE) {
|
||||
} else if (permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL || permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL_FILE) {
|
||||
return this.canEditText
|
||||
} else if ((this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === BUNDLED_PERMISSIONS.FILE_DROP) {
|
||||
} else if (permissionsWithoutShare === BUNDLED_PERMISSIONS.FILE_DROP) {
|
||||
return this.fileDropText
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ export const BUNDLED_PERMISSIONS = {
|
|||
READ_ONLY: ATOMIC_PERMISSIONS.READ,
|
||||
UPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,
|
||||
FILE_DROP: ATOMIC_PERMISSIONS.CREATE,
|
||||
ALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,
|
||||
ALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.SHARE,
|
||||
ALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE,
|
||||
ALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ,
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ describe('SharePermissionsToolBox', () => {
|
|||
expect(addPermissions(ATOMIC_PERMISSIONS.NONE, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.READ)
|
||||
expect(addPermissions(ATOMIC_PERMISSIONS.READ, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.READ)
|
||||
expect(addPermissions(ATOMIC_PERMISSIONS.READ, ATOMIC_PERMISSIONS.UPDATE)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE)
|
||||
expect(addPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)).toBe(BUNDLED_PERMISSIONS.ALL)
|
||||
expect(addPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE)).toBe(BUNDLED_PERMISSIONS.ALL)
|
||||
expect(addPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.READ)).toBe(BUNDLED_PERMISSIONS.ALL)
|
||||
expect(addPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.NONE)).toBe(BUNDLED_PERMISSIONS.ALL)
|
||||
})
|
||||
|
|
@ -32,7 +32,7 @@ describe('SharePermissionsToolBox', () => {
|
|||
expect(subtractPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.UPDATE)).toBe(ATOMIC_PERMISSIONS.READ)
|
||||
expect(subtractPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE)
|
||||
expect(subtractPermissions(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE, ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE)).toBe(ATOMIC_PERMISSIONS.READ)
|
||||
expect(subtractPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)
|
||||
expect(subtractPermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.READ)).toBe(ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE)
|
||||
})
|
||||
|
||||
test('Has permissions', () => {
|
||||
|
|
@ -45,8 +45,8 @@ describe('SharePermissionsToolBox', () => {
|
|||
})
|
||||
|
||||
test('Toggle permissions', () => {
|
||||
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE)).toBe(ATOMIC_PERMISSIONS.SHARE)
|
||||
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.FILE_DROP)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE)
|
||||
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.UPLOAD_AND_UPDATE)).toBe(ATOMIC_PERMISSIONS.NONE)
|
||||
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, BUNDLED_PERMISSIONS.FILE_DROP)).toBe(ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.DELETE)
|
||||
expect(togglePermissions(BUNDLED_PERMISSIONS.ALL, ATOMIC_PERMISSIONS.NONE)).toBe(BUNDLED_PERMISSIONS.ALL)
|
||||
expect(togglePermissions(ATOMIC_PERMISSIONS.NONE, BUNDLED_PERMISSIONS.ALL)).toBe(BUNDLED_PERMISSIONS.ALL)
|
||||
expect(togglePermissions(ATOMIC_PERMISSIONS.READ, BUNDLED_PERMISSIONS.ALL)).toBe(BUNDLED_PERMISSIONS.ALL)
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import debounce from 'debounce'
|
|||
import PQueue from 'p-queue'
|
||||
import { fetchNode } from '../../../files/src/services/WebdavClient.ts'
|
||||
import {
|
||||
ATOMIC_PERMISSIONS,
|
||||
BUNDLED_PERMISSIONS,
|
||||
} from '../lib/SharePermissionsToolBox.js'
|
||||
import Share from '../models/Share.ts'
|
||||
|
|
@ -139,10 +140,12 @@ export default {
|
|||
hasCustomPermissions() {
|
||||
const bundledPermissions = [
|
||||
BUNDLED_PERMISSIONS.ALL,
|
||||
BUNDLED_PERMISSIONS.ALL_FILE,
|
||||
BUNDLED_PERMISSIONS.READ_ONLY,
|
||||
BUNDLED_PERMISSIONS.FILE_DROP,
|
||||
]
|
||||
return !bundledPermissions.includes(this.share.permissions)
|
||||
const permissionsWithoutShare = this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE
|
||||
return !bundledPermissions.includes(permissionsWithoutShare)
|
||||
},
|
||||
maxExpirationDateEnforced() {
|
||||
if (this.isExpiryDateEnforced) {
|
||||
|
|
|
|||
|
|
@ -1021,8 +1021,11 @@ export default {
|
|||
handleDefaultPermissions() {
|
||||
if (this.isNewShare) {
|
||||
const defaultPermissions = this.config.defaultPermissions
|
||||
if (defaultPermissions === BUNDLED_PERMISSIONS.READ_ONLY || defaultPermissions === BUNDLED_PERMISSIONS.ALL) {
|
||||
this.sharingPermission = defaultPermissions.toString()
|
||||
const permissionsWithoutShare = defaultPermissions & ~ATOMIC_PERMISSIONS.SHARE
|
||||
if (permissionsWithoutShare === BUNDLED_PERMISSIONS.READ_ONLY
|
||||
|| permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL
|
||||
|| permissionsWithoutShare === BUNDLED_PERMISSIONS.ALL_FILE) {
|
||||
this.sharingPermission = permissionsWithoutShare.toString()
|
||||
} else {
|
||||
this.sharingPermission = 'custom'
|
||||
this.share.permissions = defaultPermissions
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ describe('files_sharing: Public share - setting the default view mode', () => {
|
|||
.findByRole('button', { name: /Actions/i })
|
||||
.click()
|
||||
cy.findByRole('menuitem', { name: /Customize link/i }).click()
|
||||
cy.findByRole('button', { name: /Advanced settings/i }).click()
|
||||
cy.findByRole('checkbox', { name: /Show files in grid view/i })
|
||||
.scrollIntoView()
|
||||
cy.findByRole('checkbox', { name: /Show files in grid view/i })
|
||||
|
|
|
|||
|
|
@ -195,6 +195,7 @@ describe('files_sharing: Public share - downloading files', { testIsolation: tru
|
|||
triggerActionForFile('test', 'details')
|
||||
|
||||
openLinkShareDetails(0)
|
||||
cy.findByRole('button', { name: /advanced settings/i }).click()
|
||||
|
||||
cy.intercept('PUT', '**/ocs/v2.php/apps/files_sharing/api/v1/shares/*').as('update')
|
||||
|
||||
|
|
@ -210,12 +211,14 @@ describe('files_sharing: Public share - downloading files', { testIsolation: tru
|
|||
cy.wait('@update')
|
||||
|
||||
openLinkShareDetails(0)
|
||||
cy.findByRole('button', { name: /advanced settings/i }).click()
|
||||
cy.findByRole('checkbox', { name: /hide download/i })
|
||||
.should('be.checked')
|
||||
|
||||
cy.reload()
|
||||
|
||||
openLinkShareDetails(0)
|
||||
cy.findByRole('button', { name: /advanced settings/i }).click()
|
||||
cy.findByRole('checkbox', { name: /hide download/i })
|
||||
.should('be.checked')
|
||||
})
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ describe('files_sharing: sidebar tab', () => {
|
|||
it('correctly lists shares by label with special characters', () => {
|
||||
createLinkShare({ user: alice }, 'test')
|
||||
openLinkShareDetails(0)
|
||||
cy.findByRole('button', { name: /advanced settings/i }).click()
|
||||
cy.findByRole('textbox', { name: /share label/i })
|
||||
.should('be.visible')
|
||||
.type('Alice\' share')
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ describe('files_sharing: Public share - View only', { testIsolation: true }, ()
|
|||
.should('be.visible')
|
||||
cy.get('[data-cy-files-sharing-share-permissions-bundle="read-only"]')
|
||||
.click()
|
||||
cy.findByRole('button', { name: /advanced settings/i }).click()
|
||||
cy.findByRole('checkbox', { name: 'Hide download' })
|
||||
.check({ force: true })
|
||||
// save the update
|
||||
|
|
|
|||
2
dist/7257-7257.js
vendored
Normal file
2
dist/7257-7257.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/7257-7257.js.map
vendored
Normal file
1
dist/7257-7257.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/7257-7257.js.map.license
vendored
Symbolic link
1
dist/7257-7257.js.map.license
vendored
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
7257-7257.js.license
|
||||
2
dist/922-922.js
vendored
2
dist/922-922.js
vendored
File diff suppressed because one or more lines are too long
1
dist/922-922.js.map
vendored
1
dist/922-922.js.map
vendored
File diff suppressed because one or more lines are too long
1
dist/922-922.js.map.license
vendored
1
dist/922-922.js.map.license
vendored
|
|
@ -1 +0,0 @@
|
|||
922-922.js.license
|
||||
4
dist/files_sharing-files_sharing_tab.js
vendored
4
dist/files_sharing-files_sharing_tab.js
vendored
File diff suppressed because one or more lines are too long
2
dist/files_sharing-files_sharing_tab.js.map
vendored
2
dist/files_sharing-files_sharing_tab.js.map
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue