UNPKG

ryuu

Version:

Domo App Dev Studio CLI, The main tool used to create, edit, and publish app designs to Domo

116 lines 4.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Login = void 0; var glob = require("glob"); var fs = require("fs-extra"); var path = require("path"); var models_1 = require("../models"); var Domo = require("ryuu-client"); var log_1 = require("./log"); var Configstore = require("configstore"); var inquirer = require("inquirer"); var home = Domo.getHomeDir(); var Login = /** @class */ (function () { function Login(instance) { this.instance = instance !== null && instance !== void 0 ? instance : Login.getCurrentLogin().instance; this.login = new Configstore("/ryuu/".concat(this.instance)); this.proxy = new Configstore("/proxy"); if (this.instance === '') log_1.log.fail('You have not logged into any Domo instances'); } Login.getPreviousLogins = function () { var logins = (glob.sync(home + '/ryuu/*.json') || []).map(function (file) { return fs.readJsonSync(file); }); return logins; }; /** * persist login to user's domo home */ Login.prototype.persistLogin = function (refreshToken, devToken) { this.login.set('instance', this.instance); this.login.set('refreshToken', refreshToken); this.login.set('devToken', !!devToken); return { instance: this.instance, refreshToken: refreshToken, devToken: devToken }; }; Login.prototype.removeDevToken = function () { this.deleteRefreshToken(); this.login.set('devToken', false); }; Login.prototype.deleteRefreshToken = function () { this.login.delete('refreshToken'); }; Login.removeLogin = function (instance) { var loginFile = path.resolve(home + '/ryuu/' + instance + '.json'); fs.ensureFileSync(loginFile); return fs.unlink(loginFile); }; Login.removeAllLogins = function () { fs.emptyDirSync(home + '/ryuu/'); }; Login.verifyLogin = function (login) { verifyLoginLocal(login); }; Login.prototype.logout = function () { log_1.log.info("Attempting to log out from ".concat(this.instance)); if (this.login.has('refreshToken')) { this.deleteRefreshToken(); !this.login.has('refreshToken') ? log_1.log.ok('Successful logout from ' + this.instance) : log_1.log.fail("Failed logout from ".concat(this.instance)); } else { log_1.log.ok("Not currently logged into ".concat(this.instance)); } }; Login.prototype.getClient = function () { var _this = this; var username = this.proxy.get('username'); if (username) { return inquirer .prompt([ { type: 'password', message: 'Please enter your password:', name: 'pass', }, ]) .then(function (answers) { return Promise.resolve(new Domo(_this.instance, _this.login.get('refreshToken'), models_1.constant.CLIENT_ID, { host: _this.proxy.get('host'), port: _this.proxy.get('port'), //@ts-ignore username: proxy.get('username'), password: answers.pass, }, _this.login.get('devToken'))); }); } else { try { return Promise.resolve(new Domo(this.instance, this.login.get('refreshToken'), models_1.constant.CLIENT_ID, { host: this.proxy.get('host'), port: this.proxy.get('port') }, this.login.get('devToken'))); } catch (ex) { return Promise.resolve(new Domo(this.instance, this.login.get('refreshToken'), models_1.constant.CLIENT_ID)); } } }; Login.getCurrentLogin = function () { var allLogins = glob.sync(home + '/ryuu/*.json'); // If there are no logins, return an empty object if (allLogins.length === 0) { return { instance: '' }; } var currentLogin = allLogins.reduce(function (prev, next) { return fs.statSync(prev).mtime > fs.statSync(next).mtime ? prev : next; }); return fs.readJsonSync(currentLogin); }; return Login; }()); exports.Login = Login; //const getLogin = function verifyLoginLocal(login) { if (!login.refreshToken) log_1.log.fail('Not authenticated', 'Please login using "domo login"'); } //# sourceMappingURL=login.js.map