UNPKG

browser-sdk

Version:

javascript SDK for the lightelligence-platform

236 lines (200 loc) 6.98 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "User", { enumerable: true, get: function get() { return _user["default"]; } }); Object.defineProperty(exports, "Tenant", { enumerable: true, get: function get() { return _tenant["default"]; } }); Object.defineProperty(exports, "Client", { enumerable: true, get: function get() { return _client["default"]; } }); Object.defineProperty(exports, "Device", { enumerable: true, get: function get() { return _device["default"]; } }); Object.defineProperty(exports, "Timeseries", { enumerable: true, get: function get() { return _timeseries["default"]; } }); Object.defineProperty(exports, "Event", { enumerable: true, get: function get() { return _event["default"]; } }); Object.defineProperty(exports, "Certificate", { enumerable: true, get: function get() { return _certificate["default"]; } }); Object.defineProperty(exports, "DeviceType", { enumerable: true, get: function get() { return _deviceType["default"]; } }); Object.defineProperty(exports, "Consumption", { enumerable: true, get: function get() { return _consumption["default"]; } }); Object.defineProperty(exports, "Role", { enumerable: true, get: function get() { return _role["default"]; } }); Object.defineProperty(exports, "Application", { enumerable: true, get: function get() { return _application["default"]; } }); Object.defineProperty(exports, "ApplicationDeveloper", { enumerable: true, get: function get() { return _applicationDeveloper["default"]; } }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _UserManager = _interopRequireDefault(require("./oidc/UserManager")); var _userManagerProvider = _interopRequireDefault(require("./tools/userManagerProvider")); var _environmentProvider = _interopRequireDefault(require("./tools/environmentProvider")); var _user = _interopRequireDefault(require("./modules/user")); var _tenant = _interopRequireDefault(require("./modules/tenant")); var _client = _interopRequireDefault(require("./modules/client")); var _device = _interopRequireDefault(require("./modules/device")); var _timeseries = _interopRequireDefault(require("./modules/timeseries")); var _event = _interopRequireDefault(require("./modules/event")); var _certificate = _interopRequireDefault(require("./modules/certificate")); var _deviceType = _interopRequireDefault(require("./modules/deviceType")); var _consumption = _interopRequireDefault(require("./modules/consumption")); var _role = _interopRequireDefault(require("./modules/role")); var _application = _interopRequireDefault(require("./modules/application")); var _applicationDeveloper = _interopRequireDefault(require("./modules/applicationDeveloper")); var AUTH_CALLBACK_DEFAULT_PATH = '/auth-callback'; /** * Main browser sdk module * TODO: add getting started block here * @param {Object} options * @param {string} [options.environment] - lightelligence environment. * avalaible options: 'dev', 'int', 'preview', 'prod' * @param {array} [options.scope = ['openid', 'profile', 'email']] - openid scope * @param {string} options.clientId - registered app client id * @param {string} [options.authCallback = '/auth-callback'] - configurable authCallback path, the * signin redirect after this path is called is automatically handled by this sdk */ var BrowserSDK = /*#__PURE__*/ function () { function BrowserSDK(_ref) { var environment = _ref.environment, clientId = _ref.clientId, _ref$scope = _ref.scope, scope = _ref$scope === void 0 ? ['openid', 'profile', 'email'] : _ref$scope, _ref$authCallback = _ref.authCallback, authCallback = _ref$authCallback === void 0 ? AUTH_CALLBACK_DEFAULT_PATH : _ref$authCallback; (0, _classCallCheck2["default"])(this, BrowserSDK); if (!environment || !clientId) { throw Error('Browser SDK: Missing one or more init options.'); } var baseUrl = _environmentProvider["default"].getBaseUrlFromEnv(environment); this.authCallback = authCallback; this.manager = new _UserManager["default"]({ authority: "http://".concat(baseUrl, "/auth/realms/IoT"), client_id: clientId, scope: scope.join(' '), response_type: 'code', // Authorisation code flow only since we don't support anything else redirect_uri: "".concat(window.location.origin).concat(authCallback), post_logout_redirect_uri: window.location.origin }); // execute this code only on redirect from token issuer if (window.location.pathname === authCallback) { this.manager.signinRedirectCallback().then(function () { window.location = window.location.origin; })["catch"](function (e) { throw new Error(e); }); } _userManagerProvider["default"].set(this.manager); _environmentProvider["default"].set({ apiUri: "https://api.".concat(baseUrl, "/v1"), clientId: clientId }); } /** * Redirects to login page if user is not logged in already * @param {Object} [options] * @param {string} [options.loginHint] - login_hint to forward email/username in keycloak. */ (0, _createClass2["default"])(BrowserSDK, [{ key: "login", value: function login() { var _this = this; var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, loginHint = _ref2.loginHint; return this.manager.getUser().then(function (user) { // ignore this code only on redirect from token issuer if (!user && window.location.pathname !== _this.authCallback) { _this.manager.signinRedirect({ login_hint: loginHint }); } }); } /** * Changes a tenant * * In case there is no tenantId provided, it will either redirect to the * tenant selection page or to the oAuth login page. * * @param {string} [tenantId] The tenant id that the user wants to change to */ }, { key: "changeTenant", value: function changeTenant(tenantId) { return tenantId ? this.manager.changeTenant(tenantId) : this.manager.signinRedirect(); } /** * Logs user out */ }, { key: "logout", value: function logout() { _userManagerProvider["default"].clear(); this.manager.signoutRedirect(); } /** * Return current user * @returns {Promise} user profile object */ }, { key: "getCurrentUser", value: function getCurrentUser() { return this.manager.getUser(); } }]); return BrowserSDK; }(); exports["default"] = BrowserSDK;