From 065234ef0131267763561f1c9264a3b575a750ba Mon Sep 17 00:00:00 2001 From: Jannik Stehle Date: Wed, 22 Nov 2023 14:33:47 +0100 Subject: [PATCH] feat: respect default link permissions --- .../enhancement-default-link-permissions | 6 ++ .../components/EmbedActions/EmbedActions.vue | 6 +- .../components/SideBar/Shares/FileLinks.vue | 9 ++- .../SideBar/Shares/Links/CreateQuickLink.vue | 40 ++---------- .../EmbedActions/EmbedActions.spec.ts | 10 ++- .../SideBar/Shares/FileLinks.spec.ts | 42 ++++++++----- .../composables/capability/useCapability.ts | 9 +-- packages/web-pkg/src/helpers/share/link.ts | 61 ++++++++++--------- .../tests/unit/helpers/share/link.spec.ts | 45 ++++++++++++-- 9 files changed, 135 insertions(+), 93 deletions(-) create mode 100644 changelog/unreleased/enhancement-default-link-permissions diff --git a/changelog/unreleased/enhancement-default-link-permissions b/changelog/unreleased/enhancement-default-link-permissions new file mode 100644 index 00000000000..5bc9670ebad --- /dev/null +++ b/changelog/unreleased/enhancement-default-link-permissions @@ -0,0 +1,6 @@ +Enhancement: Default link permission + +When creating a new link, Web now respects the default permissions coming from the server. + +https://github.com/owncloud/web/pull/10037 +https://github.com/owncloud/web/issues/9919 diff --git a/packages/web-app-files/src/components/EmbedActions/EmbedActions.vue b/packages/web-app-files/src/components/EmbedActions/EmbedActions.vue index 54613e111c1..b1921639137 100644 --- a/packages/web-app-files/src/components/EmbedActions/EmbedActions.vue +++ b/packages/web-app-files/src/components/EmbedActions/EmbedActions.vue @@ -28,6 +28,7 @@ import { computed } from 'vue' import { createQuicklink, + getDefaultLinkPermissions, showQuickLinkPasswordModal, useAbility, useClientService, @@ -37,6 +38,7 @@ import { } from '@ownclouders/web-pkg' import { Resource } from '@ownclouders/web-client' import { useGettext } from 'vue3-gettext' +import { SharePermissionBit } from '@ownclouders/web-client/src/helpers' export default { setup() { @@ -88,7 +90,9 @@ export default { store.getters.capabilities?.files_sharing?.public?.password?.enforced_for?.read_only === true - if (passwordEnforced) { + const permissions = getDefaultLinkPermissions({ ability, store }) + + if (passwordEnforced && permissions > SharePermissionBit.Internal) { showQuickLinkPasswordModal( { store, $gettext: language.$gettext, passwordPolicyService }, async (password) => { diff --git a/packages/web-app-files/src/components/SideBar/Shares/FileLinks.vue b/packages/web-app-files/src/components/SideBar/Shares/FileLinks.vue index 47d4903308d..dc17fcd2f45 100644 --- a/packages/web-app-files/src/components/SideBar/Shares/FileLinks.vue +++ b/packages/web-app-files/src/components/SideBar/Shares/FileLinks.vue @@ -122,7 +122,8 @@ import { useCapabilityFilesSharingPublicCanContribute, useCapabilityFilesSharingPublicAlias, useAbility, - usePasswordPolicyService + usePasswordPolicyService, + getDefaultLinkPermissions } from '@ownclouders/web-pkg' import { shareViaLinkHelp, shareViaIndirectLinkHelp } from '../../../helpers/contextualHelpers' import { @@ -219,6 +220,7 @@ export default defineComponent({ return { $store: store, + ability, space, resource, incomingParentShare: inject('incomingParentShare'), @@ -417,7 +419,10 @@ export default defineComponent({ this.checkLinkToCreate({ link: { name: this.$gettext('Link'), - permissions: this.canCreatePublicLinks ? 1 : 0, + permissions: getDefaultLinkPermissions({ + ability: this.ability, + store: this.$store + }).toString(), expiration: this.expirationDate.default, password: false } diff --git a/packages/web-app-files/src/components/SideBar/Shares/Links/CreateQuickLink.vue b/packages/web-app-files/src/components/SideBar/Shares/Links/CreateQuickLink.vue index d1d2a5ab7b2..133fc766b2e 100644 --- a/packages/web-app-files/src/components/SideBar/Shares/Links/CreateQuickLink.vue +++ b/packages/web-app-files/src/components/SideBar/Shares/Links/CreateQuickLink.vue @@ -26,22 +26,9 @@