mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
96 lines
3.2 KiB
JavaScript
96 lines
3.2 KiB
JavaScript
/* https://github.com/prose/gatekeeper */
|
||
(function(){
|
||
'use strict';
|
||
|
||
if(!global.cloudcmd)
|
||
return console.log(
|
||
'# auth.js' + '\n' +
|
||
'# -----------' + '\n' +
|
||
'# Module is part of Cloud Commander,' + '\n' +
|
||
'# used for work with authentication.' + '\n' +
|
||
'# If you wont to see at work set auth' + '\n' +
|
||
'# parameters in config.json or environment' + '\n' +
|
||
'# and start cloudcmd.js or just do' + '\n' +
|
||
'# require(\'auth.js\').auth(code, сallback)' + '\n' +
|
||
'# http://cloudcmd.io' + '\n');
|
||
|
||
var main = global.cloudcmd.main,
|
||
|
||
DIR = './',
|
||
|
||
https = main.https,
|
||
qs = main.querystring,
|
||
pipe = require(DIR + 'pipe'),
|
||
|
||
Modules = main.modules,
|
||
Util = main.util,
|
||
|
||
GithubAuth = {
|
||
host: 'github.com',
|
||
port: 443,
|
||
path: '/login/oauth/access_token',
|
||
method: 'POST'
|
||
};
|
||
|
||
/**
|
||
* function do authentication
|
||
* @param code
|
||
* @param callback
|
||
*/
|
||
|
||
exports.auth = function(code, callback){
|
||
code = code.replace('code=', '');
|
||
|
||
Util.log(code);
|
||
authenticate(code, function(error, token) {
|
||
var result = { 'token': token };
|
||
Util.log(error || result);
|
||
|
||
Util.exec(callback, error, result);
|
||
});
|
||
};
|
||
|
||
function authenticate(code, callback) {
|
||
var req,
|
||
storage = Util.findObjByNameInArr(Modules, 'storage'),
|
||
github = Util.findObjByNameInArr(storage, 'GitHub'),
|
||
|
||
id = github && github.key,
|
||
secret = github && github.secret,
|
||
env = process.env,
|
||
|
||
clientId = env.github_key || id,
|
||
clientSecret = env.github_secret || secret,
|
||
|
||
data = qs.stringify({
|
||
client_id : clientId,
|
||
client_secret : clientSecret,
|
||
code : code
|
||
});
|
||
|
||
Util.log(clientId, clientSecret, data);
|
||
|
||
GithubAuth.headers = { 'content-length': data.length };
|
||
|
||
req = https.request(GithubAuth, function(res) {
|
||
pipe.getBody(res, function(error, body) {
|
||
var parsed, token;
|
||
|
||
if (!error) {
|
||
parsed = qs.parse(body);
|
||
|
||
if (parsed)
|
||
token = parsed.access_token;
|
||
}
|
||
|
||
Util.exec(callback, error, token);
|
||
});
|
||
});
|
||
|
||
req.end(data);
|
||
|
||
req.on('error', function(e) {
|
||
Util.exec(callback, e.message);
|
||
});
|
||
}
|
||
})();
|