UNPKG

browser-sdk

Version:

javascript SDK for the lightelligence-platform

221 lines (185 loc) 6.05 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 _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 */ class BrowserSDK { constructor(_ref) { var { environment, clientId, scope = ['openid', 'profile', 'email'], authCallback = AUTH_CALLBACK_DEFAULT_PATH } = _ref; 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(() => { window.location = window.location.origin; }).catch(e => { throw new Error(e); }); } _userManagerProvider.default.set(this.manager); _environmentProvider.default.set({ apiUri: "https://api.".concat(baseUrl, "/v1"), 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. */ login() { var { loginHint } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return this.manager.getUser().then(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 */ changeTenant(tenantId) { return tenantId ? this.manager.changeTenant(tenantId) : this.manager.signinRedirect(); } /** * Logs user out */ logout() { _userManagerProvider.default.clear(); this.manager.signoutRedirect(); } /** * Return current user * @returns {Promise} user profile object */ getCurrentUser() { return this.manager.getUser(); } } exports.default = BrowserSDK;