diff --git a/.drone.env b/.drone.env index 282dfe22d2b..c8fe09bb93b 100644 --- a/.drone.env +++ b/.drone.env @@ -1,3 +1,3 @@ # The version of OCIS to use in pipelines that test against OCIS -OCIS_COMMITID=c4d3ec7e5b07abe00ce3d9c322387eba80224ecf +OCIS_COMMITID=a9366caa0cb97de0c4a68a43f05156cc584bee16 OCIS_BRANCH=master diff --git a/changelog/unreleased/enhancement-share-and-favorite-permission-checks b/changelog/unreleased/enhancement-share-and-favorite-permission-checks new file mode 100644 index 00000000000..2d04711e041 --- /dev/null +++ b/changelog/unreleased/enhancement-share-and-favorite-permission-checks @@ -0,0 +1,6 @@ +Enhancement: Permission checks for shares and favorites + +Permission checks for creating shares and favorites have been added. + +https://github.com/owncloud/ocis/issues/7497 +https://github.com/owncloud/web/pull/9810 diff --git a/packages/web-app-files/src/components/FilesList/QuickActions.vue b/packages/web-app-files/src/components/FilesList/QuickActions.vue index 375bb623215..09a9d66718b 100644 --- a/packages/web-app-files/src/components/FilesList/QuickActions.vue +++ b/packages/web-app-files/src/components/FilesList/QuickActions.vue @@ -49,7 +49,7 @@ export default defineComponent({ const language = useGettext() const filteredActions = computed(() => - pickBy(props.actions, (action) => action.displayed(props.item, store) === true) + pickBy(props.actions, (action) => action.displayed(props.item, store, ability) === true) ) return { diff --git a/packages/web-app-files/src/components/SideBar/Shares/Collaborators/RoleDropdown.vue b/packages/web-app-files/src/components/SideBar/Shares/Collaborators/RoleDropdown.vue index 5ead5e145f9..2e6bae8a174 100644 --- a/packages/web-app-files/src/components/SideBar/Shares/Collaborators/RoleDropdown.vue +++ b/packages/web-app-files/src/components/SideBar/Shares/Collaborators/RoleDropdown.vue @@ -122,6 +122,7 @@ import { import * as uuid from 'uuid' import { defineComponent, inject, PropType, ComponentPublicInstance } from 'vue' import { + useAbility, useCapabilityFilesSharingAllowCustomPermissions, useCapabilityFilesSharingResharingDefault, useStore @@ -166,7 +167,9 @@ export default defineComponent({ emits: ['optionChange'], setup() { const store = useStore() + const ability = useAbility() return { + ability, resource: inject('resource'), incomingParentShare: inject('incomingParentShare'), hasRoleCustomPermissions: useCapabilityFilesSharingAllowCustomPermissions(store), @@ -202,7 +205,7 @@ export default defineComponent({ return PeopleShareRoles.custom(this.resource.isFolder) }, resourceIsSharable() { - return this.allowSharePermission && this.resource.canShare() + return this.allowSharePermission && this.resource.canShare({ ability: this.ability }) }, availableRoles() { if (this.resourceIsSpace) { 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 2832009aa51..621a8156a26 100644 --- a/packages/web-app-files/src/components/SideBar/Shares/FileLinks.vue +++ b/packages/web-app-files/src/components/SideBar/Shares/FileLinks.vue @@ -158,7 +158,8 @@ export default defineComponent({ }, setup() { const store = useStore() - const { can } = useAbility() + const ability = useAbility() + const { can } = ability const passwordPolicyService = usePasswordPolicyService() const hasResharing = useCapabilityFilesSharingResharing() @@ -206,7 +207,7 @@ export default defineComponent({ return false } - return unref(resource).canShare({ user: store.getters.user }) + return unref(resource).canShare({ user: store.getters.user, ability }) }) const canEditLink = ({ permissions }: Share) => { diff --git a/packages/web-app-files/src/components/SideBar/Shares/FileShares.vue b/packages/web-app-files/src/components/SideBar/Shares/FileShares.vue index 37913851d4a..521cc41df18 100644 --- a/packages/web-app-files/src/components/SideBar/Shares/FileShares.vue +++ b/packages/web-app-files/src/components/SideBar/Shares/FileShares.vue @@ -89,6 +89,7 @@