mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
Hide some actions based on node permissions and share attributes
Signed-off-by: Louis Chemineau <louis@chmn.me>
This commit is contained in:
parent
046b8f320f
commit
18b32e892c
4 changed files with 60 additions and 7 deletions
|
|
@ -46,7 +46,7 @@
|
|||
</div>
|
||||
</template>
|
||||
<template #actions>
|
||||
<NcActionButton v-if="enableLabeling"
|
||||
<NcActionButton v-if="enableLabeling && hasUpdatePermissions"
|
||||
:close-after-click="true"
|
||||
@click="labelUpdate">
|
||||
<template #icon>
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
</template>
|
||||
{{ t('files_versions', 'Compare to current version') }}
|
||||
</NcActionButton>
|
||||
<NcActionButton v-if="!isCurrent"
|
||||
<NcActionButton v-if="!isCurrent && hasUpdatePermissions"
|
||||
:close-after-click="true"
|
||||
@click="restoreVersion">
|
||||
<template #icon>
|
||||
|
|
@ -70,7 +70,8 @@
|
|||
</template>
|
||||
{{ t('files_versions', 'Restore version') }}
|
||||
</NcActionButton>
|
||||
<NcActionLink :href="downloadURL"
|
||||
<NcActionLink v-if="isDownloadable"
|
||||
:href="downloadURL"
|
||||
:close-after-click="true"
|
||||
:download="downloadURL">
|
||||
<template #icon>
|
||||
|
|
@ -78,7 +79,7 @@
|
|||
</template>
|
||||
{{ t('files_versions', 'Download version') }}
|
||||
</NcActionLink>
|
||||
<NcActionButton v-if="!isCurrent && enableDeletion"
|
||||
<NcActionButton v-if="!isCurrent && enableDeletion && hasDeletePermissions"
|
||||
:close-after-click="true"
|
||||
@click="deleteVersion">
|
||||
<template #icon>
|
||||
|
|
@ -106,6 +107,9 @@ import { translate as t } from '@nextcloud/l10n'
|
|||
import { joinPaths } from '@nextcloud/paths'
|
||||
import { getRootUrl } from '@nextcloud/router'
|
||||
import { loadState } from '@nextcloud/initial-state'
|
||||
import { Permission } from '@nextcloud/files'
|
||||
|
||||
import { hasPermissions } from '../../../files_sharing/src/lib/SharePermissionsToolBox.js'
|
||||
|
||||
export default {
|
||||
name: 'Version',
|
||||
|
|
@ -224,6 +228,33 @@ export default {
|
|||
enableDeletion() {
|
||||
return this.capabilities.files.version_deletion === true
|
||||
},
|
||||
|
||||
/** @return {boolean} */
|
||||
hasDeletePermissions() {
|
||||
return hasPermissions(this.fileInfo.permissions, Permission.DELETE)
|
||||
},
|
||||
|
||||
/** @return {boolean} */
|
||||
hasUpdatePermissions() {
|
||||
return hasPermissions(this.fileInfo.permissions, Permission.UPDATE)
|
||||
},
|
||||
|
||||
/** @return {boolean} */
|
||||
isDownloadable() {
|
||||
if ((this.fileInfo.permissions & Permission.READ) === 0) {
|
||||
return false
|
||||
}
|
||||
|
||||
// If the mount type is a share, ensure it got download permissions.
|
||||
if (this.fileInfo.mountType === 'shared') {
|
||||
const downloadAttribute = this.fileInfo.shareAttributes.find((attribute) => attribute.scope === 'permissions' && attribute.key === 'download')
|
||||
if (downloadAttribute !== undefined && downloadAttribute.enabled === false) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
labelUpdate() {
|
||||
|
|
|
|||
4
dist/files_versions-files_versions.js
vendored
4
dist/files_versions-files_versions.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -61,6 +61,28 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @copyright 2022 Louis Chmn <louis@chmn.me>
|
||||
*
|
||||
* @author Louis Chmn <louis@chmn.me>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
|
|
|
|||
2
dist/files_versions-files_versions.js.map
vendored
2
dist/files_versions-files_versions.js.map
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue