browser-sdk
Version:
javascript SDK for the lightelligence-platform
236 lines (200 loc) • 6.98 kB
JavaScript
;
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;