balena-cli/build/actions/auth.js

127 lines
4.3 KiB
JavaScript
Raw Normal View History

2015-02-26 15:47:56 +00:00
(function() {
var TOKEN_URL, _, async, open, resin, settings, url, visuals;
open = require('open');
2015-02-26 15:47:56 +00:00
_ = require('lodash-contrib');
url = require('url');
async = require('async');
resin = require('resin-sdk');
settings = require('resin-settings-client');
2015-02-26 15:47:56 +00:00
visuals = require('resin-cli-visuals');
TOKEN_URL = url.resolve(settings.get('remoteUrl'), '/preferences');
2015-02-26 15:47:56 +00:00
exports.login = {
2015-03-11 18:37:24 +00:00
signature: 'login [token]',
2015-02-26 15:47:56 +00:00
description: 'login to resin.io',
help: "Use this command to login to your resin.io account.\n\nTo login, you need your token, which is accesible from the preferences page:\n\n " + TOKEN_URL + "\n\nExamples:\n\n $ resin login\n $ resin login \"eyJ0eXAiOiJKV1Qi...\"",
2015-02-26 15:47:56 +00:00
action: function(params, options, done) {
return async.waterfall([
function(callback) {
if (params.token != null) {
return callback(null, params.token);
}
console.info("To login to the Resin CLI, you need your unique token, which is accesible from\nthe preferences page at " + TOKEN_URL + "\n\nAttempting to open a browser at that location...");
return open(TOKEN_URL, function(error) {
if (error != null) {
console.error("Unable to open a web browser in the current environment.\nPlease visit " + TOKEN_URL + " manually.");
}
return visuals.widgets.ask('What\'s your token? (visible in the preferences page)', null, callback);
});
2015-03-11 18:37:24 +00:00
}, function(token, callback) {
return resin.auth.loginWithToken(token, done);
2015-02-26 15:47:56 +00:00
}
], done);
}
};
exports.logout = {
signature: 'logout',
description: 'logout from resin.io',
help: 'Use this command to logout from your resin.io account.o\n\nExamples:\n\n $ resin logout',
2015-02-26 15:47:56 +00:00
permission: 'user',
action: function(params, options, done) {
return resin.auth.logout(done);
}
};
exports.signup = {
signature: 'signup',
description: 'signup to resin.io',
help: 'Use this command to signup for a resin.io account.\n\nIf signup is successful, you\'ll be logged in to your new user automatically.\n\nExamples:\n\n $ resin signup\n Email: me@mycompany.com\n Username: johndoe\n Password: ***********\n\n $ resin signup --email me@mycompany.com --username johndoe --password ***********\n\n $ resin whoami\n johndoe',
2015-02-26 15:47:56 +00:00
options: [
{
signature: 'email',
parameter: 'email',
description: 'user email',
alias: 'e'
}, {
signature: 'username',
parameter: 'username',
description: 'user name',
alias: 'u'
}, {
signature: 'password',
parameter: 'user password',
description: 'user password',
alias: 'p'
}
],
action: function(params, options, done) {
var hasOptionCredentials;
hasOptionCredentials = !_.isEmpty(options);
if (hasOptionCredentials) {
if (options.email == null) {
return done(new Error('Missing email'));
}
if (options.username == null) {
return done(new Error('Missing username'));
}
if (options.password == null) {
return done(new Error('Missing password'));
}
}
return async.waterfall([
function(callback) {
if (hasOptionCredentials) {
return callback(null, options);
}
return visuals.widgets.register(callback);
}, function(credentials, callback) {
return resin.auth.register(credentials, function(error, token) {
return callback(error, credentials);
});
}, function(credentials, callback) {
return resin.auth.login(credentials, callback);
}
], done);
}
};
exports.whoami = {
signature: 'whoami',
description: 'get current username',
help: 'Use this command to find out the current logged in username.\n\nExamples:\n\n $ resin whoami',
2015-02-26 15:47:56 +00:00
permission: 'user',
action: function(params, options, done) {
return resin.auth.whoami(function(error, username) {
2015-04-20 16:46:43 +00:00
if (error != null) {
return done(error);
}
2015-02-26 15:47:56 +00:00
if (username == null) {
return done(new Error('Username not found'));
}
2015-04-20 16:46:43 +00:00
console.log(username);
return done();
2015-02-26 15:47:56 +00:00
});
}
};
}).call(this);