UNPKG

node-sp-auth-config

Version:

Config options builder for node-sp-auth (SharePoint Authentication in Node.js)

99 lines 4.12 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.isOnPrem = exports.getHiddenPropertyName = exports.defaultPasswordMask = exports.saveConfigOnDisk = exports.convertSettingsToAuthContext = exports.convertAuthContextToSettings = void 0; var mkdirp = require("mkdirp"); var path = require("path"); var fs = require("fs"); var url = require("url"); var cpass_1 = require("cpass"); var convertAuthContextToSettings = function (authContext, settings) { var _a; if (settings === void 0) { settings = {}; } var passwordPropertyName = (0, exports.getHiddenPropertyName)(authContext.authOptions); var password = authContext.authOptions[passwordPropertyName]; var plainContext = __assign(__assign({ siteUrl: authContext.siteUrl, strategy: authContext.strategy }, authContext.authOptions), { custom: authContext.custom }); if (typeof password !== 'undefined' && settings.encryptPassword) { var cpass = new cpass_1.Cpass(settings.masterKey); var decodedPassword = cpass.decode(password); var encodedPassword = cpass.encode(decodedPassword); plainContext = __assign(__assign({}, plainContext), (_a = {}, _a[passwordPropertyName] = encodedPassword, _a)); } return plainContext; }; exports.convertAuthContextToSettings = convertAuthContextToSettings; var convertSettingsToAuthContext = function (configObject, settings) { if (settings === void 0) { settings = {}; } var formattedContext = { siteUrl: ((configObject === null || configObject === void 0 ? void 0 : configObject.siteUrl) || '').split('#')[0] || '', strategy: configObject.strategy, authOptions: __assign({}, configObject), settings: settings, custom: configObject.custom }; if (typeof formattedContext.custom === 'undefined') { delete formattedContext.custom; } delete formattedContext.authOptions.siteUrl; delete formattedContext.authOptions.strategy; delete formattedContext.authOptions.custom; return formattedContext; }; exports.convertSettingsToAuthContext = convertSettingsToAuthContext; var saveConfigOnDisk = function (authContext, settings) { return new Promise(function (resolve, reject) { var configDataJson = (0, exports.convertAuthContextToSettings)(authContext, settings); var saveFolderPath = path.dirname(settings.configPath); mkdirp(saveFolderPath).then(function () { var data = JSON.stringify(configDataJson, null, 2); fs.writeFile(settings.configPath, data, 'utf8', function (err) { if (err) { console.error(err); return reject(err); } resolve(); }); }).catch(function (ex) { console.error("Error creating folder \"".concat(saveFolderPath, "\""), ex); }); }); }; exports.saveConfigOnDisk = saveConfigOnDisk; exports.defaultPasswordMask = '********'; var getHiddenPropertyName = function (data) { if (data.password) { return 'password'; } if (data.clientSecret) { return 'clientSecret'; } return undefined; }; exports.getHiddenPropertyName = getHiddenPropertyName; var isOnPrem = function (siteUrl) { if (siteUrl.toLocaleLowerCase().indexOf('#spo') !== -1) { return false; } var host = url.parse(siteUrl.toLocaleLowerCase()).host || ''; return [ '.sharepoint.com', '.sharepoint.cn', '.sharepoint.de', '.sharepoint-mil.us', '.sharepoint.us' ] .filter(function (uri) { return host.indexOf(uri) !== -1; }) .length === 0; }; exports.isOnPrem = isOnPrem; //# sourceMappingURL=index.js.map