From 0771dad57fc9683b9abf694fb57a1cb91ca67aa2 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Thu, 8 Mar 2018 19:52:37 +0100 Subject: [PATCH] Do not add sharePermission logic in JS We have a dedicated dav property. We should do all the magic in 1 place. Not several. Signed-off-by: Roeland Jago Douma --- apps/files_sharing/js/share.js | 15 +-------------- core/js/files/client.js | 14 +++++++++++++- core/js/files/fileinfo.js | 7 ++++++- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index b2715912d3..22513e1b47 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -254,20 +254,7 @@ * @returns {String} */ getSharePermissions: function(fileData) { - var sharePermissions = fileData.permissions; - if (fileData.mountType && fileData.mountType === "external-root"){ - // for external storages we can't use the permissions of the mountpoint - // instead we show all permissions and only use the share permissions from the mountpoint to handle resharing - sharePermissions = sharePermissions | (OC.PERMISSION_ALL & ~OC.PERMISSION_SHARE); - } - if (fileData.type === 'file') { - // files can't be shared with delete permissions - sharePermissions = sharePermissions & ~OC.PERMISSION_DELETE; - - // create permissions don't mean anything for files - sharePermissions = sharePermissions & ~OC.PERMISSION_CREATE; - } - return sharePermissions; + return fileData.sharePermissions; } }; })(); diff --git a/core/js/files/client.js b/core/js/files/client.js index 0109ab9fdb..e16facbde0 100644 --- a/core/js/files/client.js +++ b/core/js/files/client.js @@ -49,7 +49,8 @@ xmlNamespaces: { 'DAV:': 'd', 'http://owncloud.org/ns': 'oc', - 'http://nextcloud.org/ns': 'nc' + 'http://nextcloud.org/ns': 'nc', + 'http://open-collaboration-services.org/ns': 'ocs' } }; if (options.userName) { @@ -65,6 +66,7 @@ Client.NS_OWNCLOUD = 'http://owncloud.org/ns'; Client.NS_NEXTCLOUD = 'http://nextcloud.org/ns'; Client.NS_DAV = 'DAV:'; + Client.NS_OCS = 'http://open-collaboration-services.org/ns'; Client.PROPERTY_GETLASTMODIFIED = '{' + Client.NS_DAV + '}getlastmodified'; Client.PROPERTY_GETETAG = '{' + Client.NS_DAV + '}getetag'; @@ -75,6 +77,7 @@ Client.PROPERTY_SIZE = '{' + Client.NS_OWNCLOUD + '}size'; Client.PROPERTY_GETCONTENTLENGTH = '{' + Client.NS_DAV + '}getcontentlength'; Client.PROPERTY_ISENCRYPTED = '{' + Client.NS_DAV + '}is-encrypted'; + Client.PROPERTY_SHARE_PERMISSIONS = '{' + Client.NS_OCS + '}share-permissions'; Client.PROTOCOL_HTTP = 'http'; Client.PROTOCOL_HTTPS = 'https'; @@ -125,6 +128,10 @@ * Encryption state */ [Client.NS_NEXTCLOUD, 'is-encrypted'], + /** + * Share permissions + */ + [Client.NS_OCS, 'share-permissions'] ]; /** @@ -373,6 +380,11 @@ } } + var sharePermissionsProp = props[Client.PROPERTY_SHARE_PERMISSIONS]; + if (!_.isUndefined(sharePermissionsProp)) { + data.sharePermissions = parseInt(sharePermissionsProp); + } + var mounTypeProp = props['{' + Client.NS_NEXTCLOUD + '}mount-type']; if (!_.isUndefined(mounTypeProp)) { data.mountType = mounTypeProp; diff --git a/core/js/files/fileinfo.js b/core/js/files/fileinfo.js index 1fc239da47..b4ac016f90 100644 --- a/core/js/files/fileinfo.js +++ b/core/js/files/fileinfo.js @@ -132,7 +132,12 @@ /** * @type boolean */ - hasPreview: true + hasPreview: true, + + /** + * @type int + */ + sharePermissions: null }; if (!OC.Files) {