summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2014-11-10 13:11:22 +0100
committerMorris Jobke <hey@morrisjobke.de>2014-11-10 13:11:22 +0100
commit2023878d537374b47494eb8ce44d3757b3692626 (patch)
tree8704372279875cc01e13024f704a6bc3336a6d0d
parent8afb623f088904ba58a0783c726bbe1cf3bac084 (diff)
parent83126ab67596a29200e1624088801312935e4580 (diff)
downloadnextcloud-server-2023878d537374b47494eb8ce44d3757b3692626.tar.gz
nextcloud-server-2023878d537374b47494eb8ce44d3757b3692626.zip
Merge pull request #10966 from owncloud/storage-root-share-permissions
Dont' use mountpoint permissions as share permissions for external storages
-rw-r--r--apps/files_sharing/js/share.js5
-rw-r--r--apps/files_sharing/tests/js/sharedfilelistSpec.js85
2 files changed, 90 insertions, 0 deletions
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index eccd21c9248..853e9f689f6 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -19,6 +19,11 @@
OCA.Files.FileList.prototype._createRow = function(fileData) {
var tr = oldCreateRow.apply(this, arguments);
var sharePermissions = fileData.permissions;
+ if (fileData.mountType && fileData.mountType === "external-root"){
+ // for external storages we cant 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;
diff --git a/apps/files_sharing/tests/js/sharedfilelistSpec.js b/apps/files_sharing/tests/js/sharedfilelistSpec.js
index 41c8a1f05d8..812f30d75db 100644
--- a/apps/files_sharing/tests/js/sharedfilelistSpec.js
+++ b/apps/files_sharing/tests/js/sharedfilelistSpec.js
@@ -551,4 +551,89 @@ describe('OCA.Sharing.FileList tests', function() {
expect($tr.find('.nametext').text().trim()).toEqual('local name.txt');
});
});
+ describe('setting share permissions for files', function () {
+ beforeEach(function () {
+
+ var $content = $('<div id="content"></div>');
+ $('#testArea').append($content);
+ // dummy file list
+ var $div = $(
+ '<div>' +
+ '<table id="filestable">' +
+ '<thead></thead>' +
+ '<tbody id="fileList"></tbody>' +
+ '</table>' +
+ '</div>');
+ $('#content').append($div);
+
+ fileList = new OCA.Files.FileList(
+ $div, {
+ fileActions: fileActions
+ }
+ );
+ });
+
+ it('external storage root folder', function () {
+ var $tr;
+ OC.Share.statuses = {1: {link: false, path: '/subdir'}};
+ fileList.setFiles([{
+ id: 1,
+ type: 'dir',
+ name: 'One.txt',
+ path: '/subdir',
+ mimetype: 'text/plain',
+ size: 12,
+ permissions: OC.PERMISSION_READ,
+ etag: 'abc',
+ shareOwner: 'User One',
+ recipients: 'User Two',
+ mountType: 'external-root'
+ }]);
+ $tr = fileList.$el.find('tr:first');
+
+ expect(parseInt($tr.attr('data-share-permissions'), 10)).toEqual(OC.PERMISSION_ALL - OC.PERMISSION_SHARE);
+ });
+
+ it('external storage root folder reshare', function () {
+ var $tr;
+ OC.Share.statuses = {1: {link: false, path: '/subdir'}};
+ fileList.setFiles([{
+ id: 1,
+ type: 'dir',
+ name: 'One.txt',
+ path: '/subdir',
+ mimetype: 'text/plain',
+ size: 12,
+ permissions: OC.PERMISSION_READ + OC.PERMISSION_SHARE,
+ etag: 'abc',
+ shareOwner: 'User One',
+ recipients: 'User Two',
+ mountType: 'external-root'
+ }]);
+ $tr = fileList.$el.find('tr:first');
+
+ expect(parseInt($tr.attr('data-share-permissions'), 10)).toEqual(OC.PERMISSION_ALL);
+ });
+
+ it('external storage root folder file', function () {
+ var $tr;
+ OC.Share.statuses = {1: {link: false, path: '/subdir'}};
+ fileList.setFiles([{
+ id: 1,
+ type: 'file',
+ name: 'One.txt',
+ path: '/subdir',
+ mimetype: 'text/plain',
+ size: 12,
+ permissions: OC.PERMISSION_READ,
+ etag: 'abc',
+ shareOwner: 'User One',
+ recipients: 'User Two',
+ mountType: 'external-root'
+ }]);
+ $tr = fileList.$el.find('tr:first');
+
+ expect(parseInt($tr.attr('data-share-permissions'), 10)).toEqual(OC.PERMISSION_ALL - OC.PERMISSION_SHARE - OC.PERMISSION_DELETE);
+ });
+ });
});