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/packages/kenton_accounts-sandstorm.js
2016-04-29 16:32:48 +02:00

110 lines
7.8 KiB
JavaScript

(function () {
/* Imports */
var Meteor = Package.meteor.Meteor;
var Random = Package.random.Random;
var Accounts = Package['accounts-base'].Accounts;
var AccountsServer = Package['accounts-base'].AccountsServer;
var WebApp = Package.webapp.WebApp;
var main = Package.webapp.main;
var WebAppInternals = Package.webapp.WebAppInternals;
(function(){
///////////////////////////////////////////////////////////////////////////////////
// //
// packages/kenton_accounts-sandstorm/server.js //
// //
///////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2014 Sandstorm Development Group, Inc. and contributors // 1
// Licensed under the MIT License: // 2
// // 3
// Permission is hereby granted, free of charge, to any person obtaining a copy // 4
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights // 6
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // 7
// copies of the Software, and to permit persons to whom the Software is // 8
// furnished to do so, subject to the following conditions: // 9
// // 10
// The above copyright notice and this permission notice shall be included in // 11
// all copies or substantial portions of the Software. // 12
// // 13
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // 14
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // 15
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // 16
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // 17
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // 19
// THE SOFTWARE. // 20
// 21
WebApp.rawConnectHandlers.use(function (req, res, next) { // 22
if (req.url === "/.sandstorm-credentials") { // 23
handleCredentials(req, res); // 24
return; // 25
} // 26
return next(); // 27
}); // 28
// 29
var handleCredentials = Meteor.bindEnvironment(function (req, res) { // 30
try { // 31
var permissions = req.headers["x-sandstorm-permissions"]; // 32
if (permissions && permissions !== "") { // 33
permissions = permissions.split(","); // 34
} else { // 35
permissions = []; // 36
} // 37
// 38
var credentials = { // 39
sandstormId: req.headers["x-sandstorm-user-id"] || null, // 40
name: decodeURI(req.headers["x-sandstorm-username"]), // 41
permissions: permissions, // 42
picture: req.headers["x-sandstorm-user-picture"] || null, // 43
preferredHandle: req.headers["x-sandstorm-preferred-handle"] || null, // 44
pronouns: req.headers["x-sandstorm-user-pronouns"] || null // 45
}; // 46
// 47
if (credentials.sandstormId) { // 48
var login = Accounts.updateOrCreateUserFromExternalService( // 49
"sandstorm", { // 50
id: credentials.sandstormId, // 51
name: credentials.name, // 52
permissions: permissions, // 53
picture: credentials.picture, // 54
preferredHandle: credentials.preferredHandle, // 55
pronouns: credentials.pronouns // 56
}, { profile: { name: credentials.name } }); // 57
console.log(login); // 58
credentials.meteorId = login.userId; // 59
var token = Accounts._generateStampedLoginToken(); // 60
credentials.token = token.token; // 61
Accounts._insertLoginToken(login.userId, token); // 62
} // 63
// 64
var body = new Buffer(JSON.stringify(credentials)); // 65
// 66
res.writeHead(200, { // 67
"Content-Type": "application/json", // 68
"Content-Length": body.length // 69
}); // 70
res.end(body); // 71
} catch (err) { // 72
res.writeHead(500, { // 73
"Content-Type": "text/plain" // 74
}); // 75
res.end(err.stack); // 76
} // 77
}); // 78
// 79
///////////////////////////////////////////////////////////////////////////////////
}).call(this);
/* Exports */
if (typeof Package === 'undefined') Package = {};
Package['kenton:accounts-sandstorm'] = {};
})();
//# sourceMappingURL=kenton_accounts-sandstorm.js.map