Merge pull request #10966 from owncloud/storage-root-share-permissions

Dont' use mountpoint permissions as share permissions for external storages
This commit is contained in:
Morris Jobke 2014-11-10 13:11:22 +01:00
commit 2023878d53
2 changed files with 90 additions and 0 deletions

View File

@ -19,6 +19,11 @@
OCA.Files.FileList.prototype._createRow = function(fileData) { OCA.Files.FileList.prototype._createRow = function(fileData) {
var tr = oldCreateRow.apply(this, arguments); var tr = oldCreateRow.apply(this, arguments);
var sharePermissions = fileData.permissions; 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') { if (fileData.type === 'file') {
// files can't be shared with delete permissions // files can't be shared with delete permissions
sharePermissions = sharePermissions & ~OC.PERMISSION_DELETE; sharePermissions = sharePermissions & ~OC.PERMISSION_DELETE;

View File

@ -551,4 +551,89 @@ describe('OCA.Sharing.FileList tests', function() {
expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); 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);
});
});
}); });