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 <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2018-03-08 19:52:37 +01:00
parent b7e8ab97e7
commit 0771dad57f
No known key found for this signature in database
GPG key ID: F941078878347C0C
3 changed files with 20 additions and 16 deletions

View file

@ -254,20 +254,7 @@
* @returns {String} * @returns {String}
*/ */
getSharePermissions: function(fileData) { getSharePermissions: function(fileData) {
var sharePermissions = fileData.permissions; return fileData.sharePermissions;
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;
} }
}; };
})(); })();

View file

@ -49,7 +49,8 @@
xmlNamespaces: { xmlNamespaces: {
'DAV:': 'd', 'DAV:': 'd',
'http://owncloud.org/ns': 'oc', '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) { if (options.userName) {
@ -65,6 +66,7 @@
Client.NS_OWNCLOUD = 'http://owncloud.org/ns'; Client.NS_OWNCLOUD = 'http://owncloud.org/ns';
Client.NS_NEXTCLOUD = 'http://nextcloud.org/ns'; Client.NS_NEXTCLOUD = 'http://nextcloud.org/ns';
Client.NS_DAV = 'DAV:'; Client.NS_DAV = 'DAV:';
Client.NS_OCS = 'http://open-collaboration-services.org/ns';
Client.PROPERTY_GETLASTMODIFIED = '{' + Client.NS_DAV + '}getlastmodified'; Client.PROPERTY_GETLASTMODIFIED = '{' + Client.NS_DAV + '}getlastmodified';
Client.PROPERTY_GETETAG = '{' + Client.NS_DAV + '}getetag'; Client.PROPERTY_GETETAG = '{' + Client.NS_DAV + '}getetag';
@ -75,6 +77,7 @@
Client.PROPERTY_SIZE = '{' + Client.NS_OWNCLOUD + '}size'; Client.PROPERTY_SIZE = '{' + Client.NS_OWNCLOUD + '}size';
Client.PROPERTY_GETCONTENTLENGTH = '{' + Client.NS_DAV + '}getcontentlength'; Client.PROPERTY_GETCONTENTLENGTH = '{' + Client.NS_DAV + '}getcontentlength';
Client.PROPERTY_ISENCRYPTED = '{' + Client.NS_DAV + '}is-encrypted'; Client.PROPERTY_ISENCRYPTED = '{' + Client.NS_DAV + '}is-encrypted';
Client.PROPERTY_SHARE_PERMISSIONS = '{' + Client.NS_OCS + '}share-permissions';
Client.PROTOCOL_HTTP = 'http'; Client.PROTOCOL_HTTP = 'http';
Client.PROTOCOL_HTTPS = 'https'; Client.PROTOCOL_HTTPS = 'https';
@ -125,6 +128,10 @@
* Encryption state * Encryption state
*/ */
[Client.NS_NEXTCLOUD, 'is-encrypted'], [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']; var mounTypeProp = props['{' + Client.NS_NEXTCLOUD + '}mount-type'];
if (!_.isUndefined(mounTypeProp)) { if (!_.isUndefined(mounTypeProp)) {
data.mountType = mounTypeProp; data.mountType = mounTypeProp;

View file

@ -132,7 +132,12 @@
/** /**
* @type boolean * @type boolean
*/ */
hasPreview: true hasPreview: true,
/**
* @type int
*/
sharePermissions: null
}; };
if (!OC.Files) { if (!OC.Files) {