🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →

bitbucket-auth-token

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bitbucket-auth-token - npm Package Compare versions

Comparing version

to
0.0.3

@@ -5,85 +5,88 @@ var homeDir = require('home-dir');

var RSVP = require('rsvp');
var _ = require('lodash');
function getAccessToken(opts) {
// appName, consumerKey, consumerSecret, credentialsResolver, forceCredentials
var appConfigPath = homeDir("/." + opts.appName);
var appConfig;
// appName, consumerKey, consumerSecret, credentialsProvider, forceCredentials
var configPath = homeDir("/." + opts.appName);
var config;
try {
appConfig = jsonfile.readFileSync(appConfigPath);
config = jsonfile.readFileSync(configPath);
} catch (e) {
appConfig = {};
config = {};
}
opts = _.extend({}, opts, {
configPath: configPath,
config: config
});
if (appConfig.refreshToken && !opts.forceCredentials) {
return new RSVP.Promise(function (resolve, reject) {
request
.post('https://bitbucket.org/site/oauth2/access_token')
.auth(opts.consumerKey, opts.consumerSecret)
.accept('application/json')
.type('form')
.send({
grant_type: 'refresh_token',
refresh_token: appConfig.refreshToken
})
.end(function (err, res) {
if (res && res.ok) {
jsonfile.writeFileSync(appConfigPath, {
refreshToken: res.body.refresh_token
}, {mode: 0600});
resolve(res.body.access_token);
} else {
var errorMessage;
if (res && res.status === 401) {
errorMessage = "Authentication failed! Bad refresh token?";
} else if (err) {
errorMessage = err;
} else {
errorMessage = res.text;
}
reject(errorMessage);
}
});
if (config.refreshToken && !opts.forceCredentials) {
opts.refreshToken = config.refreshToken;
return getTokens(opts);
} else if (opts.credentialsProvider) {
return opts.credentialsProvider().then(function(credentials) {
opts = _.extend(opts, credentials);
return getTokens(opts);
});
} else {
throw 'opts must specify a credentialsResolver';
}
}
function getTokens(opts) {
var payload;
var errorMessageOn401 = 'Authentication failed!';
if (opts.username) {
payload = {
grant_type: 'password',
username: opts.username,
password: opts.password
};
errorMessageOn401 += ' Bad username/password?';
} else if (opts.refreshToken) {
payload = {
grant_type: 'refresh_token',
refresh_token: opts.refreshToken
};
errorMessageOn401 += ' Bad refresh token?';
} else {
throw 'opts must specify either username and password, or refreshToken';
}
return opts.credentialsResolver().then(function(credentials) {
return new RSVP.Promise(function (resolve, reject) {
request
.post('https://bitbucket.org/site/oauth2/access_token')
.auth(opts.consumerKey, opts.consumerSecret)
.accept('application/json')
.type('form')
.send({
grant_type: 'password',
username: credentials.username,
password: credentials.password
})
.end(function (err, res) {
if (res && res.ok) {
jsonfile.writeFileSync(appConfigPath, {
refreshToken: res.body.refresh_token
}, {mode: 0600});
resolve(res.body.access_token);
} else {
var errorMessage;
if (res && res.status === 401) {
errorMessage = "Authentication failed! Bad username/password?";
} else if (err) {
errorMessage = err;
} else {
errorMessage = res.text;
}
reject(errorMessage);
return new RSVP.Promise(function (resolve, reject) {
request
.post('https://bitbucket.org/site/oauth2/access_token')
.auth(opts.consumerKey, opts.consumerSecret)
.accept('application/json')
.type('form')
.send(payload)
.end(function (err, res) {
if (res && res.ok) {
var newConfig = _.extend(opts.config, {
refreshToken: res.body.refresh_token
});
jsonfile.writeFile(opts.configPath, newConfig, {
mode: 0600
}, function() {
// log a message if we're using the password flow to retrieve a token
if (opts.username) {
opts.logger('storing auth token in ' + opts.configPath);
}
});
resolve(res.body.access_token);
} else {
var errorMessage;
if (res && res.status === 401) {
errorMessage = errorMessageOn401;
} else if (err) {
errorMessage = err;
} else {
errorMessage = res.text;
}
reject(errorMessage);
}
});
});
}
});
}

@@ -90,0 +93,0 @@

{
"name": "bitbucket-auth-token",
"version": "0.0.2",
"version": "0.0.3",
"description": "Maintain a local cache of Bitbucket OAuth tokens for use with the Bitbucket REST API.",

@@ -22,2 +22,3 @@ "main": "index.js",

"jsonfile": "^2.2.3",
"lodash": "^3.10.1",
"rsvp": "^3.1.0",

@@ -24,0 +25,0 @@ "superagent": "^1.4.0"

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet