xrmcli
Version:
A suite of cli tools to support Xrm/D365/Dataverse development
68 lines • 3.09 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AddAuthCommandOptions = exports.Authenticate = void 0;
const adal_node_1 = require("adal-node");
const commander_1 = require("commander");
const terms_1 = __importDefault(require("./terms"));
const authenticateWithUsernamePassword = (tenent, url, username, password, clientid) =>
// eslint-disable-next-line implicit-arrow-linebreak
new Promise((resolve, reject) => {
const authContext = new adal_node_1.AuthenticationContext(tenent);
authContext.acquireTokenWithUsernamePassword(url, username, password, clientid, (error, response) => {
if (error) {
reject(error);
}
if (response.accessToken) {
resolve(response);
}
if (response.error) {
reject(response.error);
}
reject(new Error('Unknow authentication error!'));
});
});
const authenticateWithClientSecret = (tenent, url, clientid, secret) =>
// eslint-disable-next-line implicit-arrow-linebreak
new Promise((resolve, reject) => {
const authContext = new adal_node_1.AuthenticationContext(tenent);
authContext.acquireTokenWithClientCredentials(url, clientid, secret, (error, response) => {
if (error) {
reject(error);
}
if (response.accessToken) {
resolve(response);
}
if (response.error) {
reject(response.error);
}
reject(new Error('Unknow authentication error!'));
});
});
const Authenticate = (options) => {
// eslint-disable-next-line object-curly-newline
const { tenent, url, clientid, secret, username, password } = options;
if (username && password && clientid) {
return authenticateWithUsernamePassword(tenent, url, username, password, clientid);
}
if (clientid && secret) {
return authenticateWithClientSecret(tenent, url, clientid, secret);
}
throw new Error('Invalid authetication options!');
};
exports.Authenticate = Authenticate;
const AddAuthCommandOptions = () => {
commander_1.program
.requiredOption('-u, --url <url>', `${terms_1.default.d365} Url. e.g. https://myorg.crm11.dynamics.com/`)
.option('-n, --username <username>', `Username for ${terms_1.default.d365}`)
.option('-p, --password <password>', `Password for ${terms_1.default.d365}`)
.option('-cs, --secret <secret>', 'OAuth Client Secret')
.requiredOption('-t, --tenent <tenent>', `${terms_1.default.AAD} authority. e.g. https://login.windows.net/myorg.onmicrosoft.com`)
.option('-c, --clientid <clientid>', 'OAuth Client Id', '51f81489-12ee-4a9e-aaae-a2591f45987d')
.addHelpText('after', terms_1.default.AuthHelp);
};
exports.AddAuthCommandOptions = AddAuthCommandOptions;
exports.default = exports.Authenticate;
//# sourceMappingURL=connect.js.map