Ensure share has download permissions in F2V

Signed-off-by: Louis <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
pull/41685/head
Louis 2 years ago committed by nextcloud-command
parent f56866cc82
commit 78e75bffae
  1. 20
      apps/files/src/actions/downloadAction.ts
  2. 4
      dist/files-init.js
  3. 2
      dist/files-init.js.map

@ -41,19 +41,20 @@ const downloadNodes = function(dir: string, nodes: Node[]) {
triggerDownload(url)
}
// If the mount type is a share, ensure it got download permissions.
const isDownloadable = function(node: Node) {
if (node.attributes['mount-type'] !== 'shared') {
return true
if ((node.permissions & Permission.READ) === 0) {
return false
}
const downloadAttribute = JSON.parse(node.attributes['share-attributes']).find(attribute => attribute.scope === 'permissions' && attribute.key === 'download')
if (downloadAttribute === undefined) {
return true
// If the mount type is a share, ensure it got download permissions.
if (node.attributes['mount-type'] === 'shared') {
const downloadAttribute = JSON.parse(node.attributes['share-attributes']).find((attribute: { scope: string; key: string }) => attribute.scope === 'permissions' && attribute.key === 'download')
if (downloadAttribute !== undefined && downloadAttribute.enabled === false) {
return false
}
}
return downloadAttribute.enable
return true
}
export const action = new FileAction({
@ -74,8 +75,7 @@ export const action = new FileAction({
return false
}
return nodes
.every(node => ((node.permissions & Permission.READ) !== 0) && isDownloadable(node))
return nodes.every(isDownloadable)
},
async exec(node: Node, view: View, dir: string) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save