1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/rocketchat_ynh.git synced 2024-09-03 20:16:25 +02:00
rocketchat_ynh/sources/programs/server/app/lib/fileUpload.coffee.js
2016-04-29 16:32:48 +02:00

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