mirror of
https://github.com/YunoHost-Apps/rocketchat_ynh.git
synced 2024-09-03 20:16:25 +02:00
106 lines
7.6 KiB
JavaScript
106 lines
7.6 KiB
JavaScript
(function(){
|
|
|
|
/////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// lib/fileUpload.coffee.js //
|
|
// //
|
|
/////////////////////////////////////////////////////////////////////////
|
|
//
|
|
__coffeescriptShare = typeof __coffeescriptShare === 'object' ? __coffeescriptShare : {}; var share = __coffeescriptShare;
|
|
var initFileStore; // 1
|
|
//
|
|
if (typeof UploadFS !== "undefined" && UploadFS !== null) { // 1
|
|
RocketChat.models.Uploads.model.allow({ // 2
|
|
insert: function(userId, doc) { // 3
|
|
return userId; // 4
|
|
}, //
|
|
update: function(userId, doc) { // 3
|
|
return userId === doc.userId; // 7
|
|
}, //
|
|
remove: function(userId, doc) { // 3
|
|
return userId === doc.userId; // 10
|
|
} //
|
|
}); //
|
|
initFileStore = function() { // 2
|
|
var cookie; // 13
|
|
cookie = new Cookies(); // 13
|
|
if (Meteor.isClient) { // 14
|
|
cookie.set('rc_uid', Meteor.userId()); // 15
|
|
cookie.set('rc_token', Meteor._localStorage.getItem('Meteor.loginToken'));
|
|
cookie.send(); // 15
|
|
} //
|
|
return Meteor.fileStore = new UploadFS.store.GridFS({ //
|
|
collection: RocketChat.models.Uploads.model, // 20
|
|
name: 'rocketchat_uploads', // 20
|
|
collectionName: 'rocketchat_uploads', // 20
|
|
filter: new UploadFS.Filter({ // 20
|
|
onCheck: FileUpload.validateFileUpload // 24
|
|
}), //
|
|
transformWrite: function(readStream, writeStream, fileId, file) {
|
|
var identify, stream; // 26
|
|
if (RocketChatFile.enabled === false || !/^image\/.+/.test(file.type)) {
|
|
return readStream.pipe(writeStream); // 27
|
|
} //
|
|
stream = void 0; // 26
|
|
identify = function(err, data) { // 26
|
|
var ref; // 32
|
|
if (err != null) { // 32
|
|
return stream.pipe(writeStream); // 33
|
|
} //
|
|
file.identify = { // 32
|
|
format: data.format, // 36
|
|
size: data.size // 36
|
|
}; //
|
|
if ((data.Orientation != null) && ((ref = data.Orientation) !== '' && ref !== 'Unknown' && ref !== 'Undefined')) {
|
|
return RocketChatFile.gm(stream).autoOrient().stream().pipe(writeStream);
|
|
} else { //
|
|
return stream.pipe(writeStream); //
|
|
} //
|
|
}; //
|
|
return stream = RocketChatFile.gm(readStream).identify(identify).stream();
|
|
}, //
|
|
onRead: function(fileId, file, req, res) { // 20
|
|
var rawCookies, ref, token, uid; // 47
|
|
if (RocketChat.settings.get('FileUpload_ProtectFiles')) { // 47
|
|
if ((req != null ? (ref = req.headers) != null ? ref.cookie : void 0 : void 0) != null) {
|
|
rawCookies = req.headers.cookie; // 48
|
|
} //
|
|
if (rawCookies != null) { // 49
|
|
uid = cookie.get('rc_uid', rawCookies); // 49
|
|
} //
|
|
if (rawCookies != null) { // 50
|
|
token = cookie.get('rc_token', rawCookies); // 50
|
|
} //
|
|
if (uid == null) { // 52
|
|
uid = req.query.rc_uid; // 53
|
|
token = req.query.rc_token; // 53
|
|
} //
|
|
if (!(uid && token && RocketChat.models.Users.findOneByIdAndLoginToken(uid, token))) {
|
|
res.writeHead(403); // 57
|
|
return false; // 58
|
|
} //
|
|
} //
|
|
res.setHeader('content-disposition', "attachment; filename=\"" + (encodeURIComponent(file.name)) + "\"");
|
|
return true; // 61
|
|
} //
|
|
}); //
|
|
}; //
|
|
Meteor.startup(function() { // 2
|
|
if (Meteor.isServer) { // 64
|
|
return initFileStore(); //
|
|
} else { //
|
|
return Tracker.autorun(function(c) { //
|
|
if (Meteor.userId() && RocketChat.settings.subscription.ready()) {
|
|
initFileStore(); // 69
|
|
return c.stop(); //
|
|
} //
|
|
}); //
|
|
} //
|
|
}); //
|
|
} //
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////
|
|
|
|
}).call(this);
|
|
|
|
//# sourceMappingURL=fileUpload.coffee.js.map
|