flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
97 lines • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const cli_helper_1 = require("./cli-helper");
const clortho_lite_1 = require("clortho-lite");
const cli_1 = require("./cli");
const request = require('request');
const { prompt } = require('enquirer');
const loginEndPoint = 'https://www.flagpolejs.com/api/token';
const serviceName = 'Flagpole JS';
const service = new clortho_lite_1.ClorthoService(serviceName);
function promptForLogin() {
prompt([
{
type: 'input',
name: 'email',
message: 'Email Address',
validate: function (input) {
return (/^[^ @]{1,32}@[^ ]{3,}\.[a-z]{2,8}/i.test(input));
}
},
{
type: 'password',
name: 'password',
message: 'Password',
validate: function (input) {
return (/^.{3,16}$/i.test(input));
}
}
]).then(function (answers) {
cli_1.Cli.hideBanner = true;
request.post(loginEndPoint, {
body: JSON.stringify({ email: answers.email, password: answers.password }),
headers: {
'Content-Type': 'application/json'
}
}, function (err, response, body) {
cli_1.Cli.log('');
if (err) {
cli_1.Cli.log(err);
cli_1.Cli.log(body);
cli_1.Cli.log('');
cli_1.Cli.exit(1);
}
if (response.statusCode == 201) {
let json = JSON.parse(body);
if (json.data.token) {
service.set('email', answers.email);
service.set('token', json.data.token)
.then(function (value) {
cli_1.Cli.log('Logged in. Saved to your keychain.');
cli_1.Cli.log('');
cli_1.Cli.exit(0);
})
.catch(function (err) {
cli_1.Cli.log('Error saving credentials to your keychain.');
cli_1.Cli.log('');
cli_1.Cli.exit(0);
});
}
else {
cli_1.Cli.log('Login failed.');
cli_1.Cli.log(body);
cli_1.Cli.log('');
cli_1.Cli.exit(1);
}
}
else {
cli_1.Cli.log('Error logging in. Status code: ' + response.statusCode);
cli_1.Cli.log('');
cli_1.Cli.exit(1);
}
});
}).catch(function (err) {
cli_1.Cli.log('Error: ' + err);
cli_1.Cli.log('');
cli_1.Cli.exit(1);
});
}
function login() {
cli_helper_1.printHeader();
cli_helper_1.printSubheader('Login to FlagpoleJS.com');
cli_1.Cli.hideBanner = true;
cli_1.Cli.log('');
cli_1.Cli.log('This site is in early private beta.');
cli_1.Cli.getCredentials().then(function (credentials) {
cli_1.Cli.log('');
cli_1.Cli.log('You are already logged in as ' + credentials.email);
cli_1.Cli.log('');
cli_1.Cli.log('To sign in with a different account use the command: flagpole logout');
cli_1.Cli.log('');
cli_1.Cli.exit(0);
}).catch(function () {
promptForLogin();
});
}
exports.login = login;
//# sourceMappingURL=login.js.map