mirror of
https://github.com/telekom-security/tpotce.git
synced 2025-04-29 19:58:52 +00:00
121 lines
2.8 KiB
Text
121 lines
2.8 KiB
Text
![]() |
/*
|
||
|
* Copyright (c) 2017
|
||
|
*
|
||
|
* This file is licensed under the Affero General Public License version 3
|
||
|
* or later.
|
||
|
*
|
||
|
* See the COPYING-README file.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
(function() {
|
||
|
/**
|
||
|
* @class OC.Share.ShareModel
|
||
|
* @classdesc
|
||
|
*
|
||
|
* Represents a single share.
|
||
|
*/
|
||
|
var ShareModel = OC.Backbone.Model.extend({
|
||
|
|
||
|
url: function() {
|
||
|
var params = {
|
||
|
format: 'json'
|
||
|
};
|
||
|
var idPart = '';
|
||
|
// note: unsaved new models have no ids at first but need a POST URL
|
||
|
if (!_.isUndefined(this.id)) {
|
||
|
idPart = '/' + encodeURIComponent(this.id);
|
||
|
}
|
||
|
return OC.linkToOCS('apps/files_sharing/api/v1', 2) +
|
||
|
'shares' +
|
||
|
idPart +
|
||
|
'?' + OC.buildQueryString(params);
|
||
|
},
|
||
|
|
||
|
parse: function(data) {
|
||
|
/* jshint camelcase: false */
|
||
|
if (data.ocs && data.ocs.data) {
|
||
|
// parse out of the ocs response
|
||
|
data = data.ocs.data;
|
||
|
}
|
||
|
|
||
|
// parse the non-camel to camel
|
||
|
if (data.share_type === OC.Share.SHARE_TYPE_LINK) {
|
||
|
// store password in a separate attribute as we don't
|
||
|
// want to re-save it like this
|
||
|
data.encryptedPassword = data.share_with;
|
||
|
delete data.share_with;
|
||
|
delete data.file_target;
|
||
|
delete data.mail_send;
|
||
|
delete data.share_with_displayname;
|
||
|
}
|
||
|
|
||
|
data.itemSource = data.item_source;
|
||
|
delete data.item_source;
|
||
|
data.itemType = data.item_type;
|
||
|
delete data.item_type;
|
||
|
data.shareType = data.share_type;
|
||
|
delete data.share_type;
|
||
|
|
||
|
// convert the inconsistency... (read as expiration, saved as expireDate...)
|
||
|
if (data.expiration && !data.expireDate) {
|
||
|
data.expireDate = data.expiration;
|
||
|
}
|
||
|
if (_.isUndefined(data.expireDate)) {
|
||
|
data.expireDate = null;
|
||
|
}
|
||
|
|
||
|
// remove unrelated/unneeded attributes,
|
||
|
delete data.expiration;
|
||
|
delete data.url;
|
||
|
|
||
|
// these can be read from the parent object or fileinfo
|
||
|
delete data.displayname_file_owner;
|
||
|
delete data.displayname_owner;
|
||
|
delete data.file_parent;
|
||
|
delete data.path;
|
||
|
delete data.storage;
|
||
|
delete data.storage_id;
|
||
|
delete data.uid_file_owner;
|
||
|
delete data.uid_owner;
|
||
|
delete data.mimetype;
|
||
|
delete data.parent;
|
||
|
|
||
|
return data;
|
||
|
},
|
||
|
|
||
|
canRead: function() {
|
||
|
return (this.get('permissions') & OC.PERMISSION_READ) > 0;
|
||
|
},
|
||
|
|
||
|
canUpdate: function() {
|
||
|
return (this.get('permissions') & OC.PERMISSION_UPDATE) > 0;
|
||
|
},
|
||
|
|
||
|
canDelete: function() {
|
||
|
return (this.get('permissions') & OC.PERMISSION_DELETE) > 0;
|
||
|
},
|
||
|
|
||
|
canCreate: function() {
|
||
|
return (this.get('permissions') & OC.PERMISSION_CREATE) > 0;
|
||
|
},
|
||
|
|
||
|
canShare: function() {
|
||
|
return (this.get('permissions') & OC.PERMISSION_SHARE) > 0;
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Returns the absolute link share
|
||
|
*
|
||
|
* @return {String} link
|
||
|
*/
|
||
|
getLink: function() {
|
||
|
var base = OC.getProtocol() + '://' + OC.getHost();
|
||
|
return base + OC.generateUrl('/s/') + this.get('token');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
OC.Share = OC.Share || {};
|
||
|
OC.Share.ShareModel = ShareModel;
|
||
|
})();
|