browser-sdk
Version:
javascript SDK for the lightelligence-platform
221 lines (185 loc) • 6.05 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 _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;