Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nasa/openmct.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/user/UserAPI.js')
-rw-r--r--src/api/user/UserAPI.js163
1 files changed, 163 insertions, 0 deletions
diff --git a/src/api/user/UserAPI.js b/src/api/user/UserAPI.js
new file mode 100644
index 000000000..0ab2d9156
--- /dev/null
+++ b/src/api/user/UserAPI.js
@@ -0,0 +1,163 @@
+/*****************************************************************************
+ * Open MCT, Copyright (c) 2014-2022, United States Government
+ * as represented by the Administrator of the National Aeronautics and Space
+ * Administration. All rights reserved.
+ *
+ * Open MCT is licensed under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0.
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ * Open MCT includes source code licensed under additional open source
+ * licenses. See the Open Source Licenses file (LICENSES.md) included with
+ * this source code distribution or the Licensing information page available
+ * at runtime from the About dialog for additional information.
+ *****************************************************************************/
+
+import EventEmitter from 'EventEmitter';
+import {
+ MULTIPLE_PROVIDER_ERROR,
+ NO_PROVIDER_ERROR
+} from './constants';
+import StatusAPI from './StatusAPI';
+import User from './User';
+
+class UserAPI extends EventEmitter {
+ /**
+ * @param {OpenMCT} openmct
+ * @param {UserAPIConfiguration} config
+ */
+ constructor(openmct, config) {
+ super();
+
+ this._openmct = openmct;
+ this._provider = undefined;
+
+ this.User = User;
+ this.status = new StatusAPI(this, openmct, config);
+ }
+
+ /**
+ * Set the user provider for the user API. This allows you
+ * to specifiy ONE user provider to be used with Open MCT.
+ * @method setProvider
+ * @memberof module:openmct.UserAPI#
+ * @param {module:openmct.UserAPI~UserProvider} provider the new
+ * user provider
+ */
+ setProvider(provider) {
+ if (this.hasProvider()) {
+ this.error(MULTIPLE_PROVIDER_ERROR);
+ }
+
+ this._provider = provider;
+ this.emit('providerAdded', this._provider);
+ }
+
+ getProvider() {
+ return this._provider;
+ }
+
+ /**
+ * Return true if the user provider has been set.
+ *
+ * @memberof module:openmct.UserAPI#
+ * @returns {boolean} true if the user provider exists
+ */
+ hasProvider() {
+ return this._provider !== undefined;
+ }
+
+ /**
+ * If a user provider is set, it will return a copy of a user object from
+ * the provider. If the user is not logged in, it will return undefined;
+ *
+ * @memberof module:openmct.UserAPI#
+ * @returns {Function|Promise} user provider 'getCurrentUser' method
+ * @throws Will throw an error if no user provider is set
+ */
+ getCurrentUser() {
+ this.noProviderCheck();
+
+ return this._provider.getCurrentUser();
+ }
+
+ /**
+ * If a user provider is set, it will return the user provider's
+ * 'isLoggedIn' method
+ *
+ * @memberof module:openmct.UserAPI#
+ * @returns {Function|Boolean} user provider 'isLoggedIn' method
+ * @throws Will throw an error if no user provider is set
+ */
+ isLoggedIn() {
+ if (!this.hasProvider()) {
+ return false;
+ }
+
+ return this._provider.isLoggedIn();
+ }
+
+ /**
+ * If a user provider is set, it will return a call to it's
+ * 'hasRole' method
+ *
+ * @memberof module:openmct.UserAPI#
+ * @returns {Function|Boolean} user provider 'isLoggedIn' method
+ * @param {string} roleId id of role to check for
+ * @throws Will throw an error if no user provider is set
+ */
+ hasRole(roleId) {
+ this.noProviderCheck();
+
+ return this._provider.hasRole(roleId);
+ }
+
+ /**
+ * Checks if a provider is set and if not, will throw error
+ *
+ * @private
+ * @throws Will throw an error if no user provider is set
+ */
+ noProviderCheck() {
+ if (!this.hasProvider()) {
+ this.error(NO_PROVIDER_ERROR);
+ }
+ }
+
+ /**
+ * Utility function for throwing errors
+ *
+ * @private
+ * @param {string} error description of error
+ * @throws Will throw error passed in
+ */
+ error(error) {
+ throw new Error(error);
+ }
+}
+
+export default UserAPI;
+/**
+ * @typedef {String} Role
+ */
+/**
+ * @typedef {Object} OpenMCT
+ */
+/**
+ * @typedef {{statusStyles: Object.<string, StatusStyleDefinition>}} UserAPIConfiguration
+ */
+/**
+ * @typedef {Object} StatusStyleDefinition
+ * @property {String} iconClass The icon class to apply to the status indicator when this status is active "icon-circle-slash",
+ * @property {String} iconClassPoll The icon class to apply to the poll question indicator when this style is active eg. "icon-status-poll-question-mark"
+ * @property {String} statusClass The class to apply to the indicator when this status is active eg. "s-status-error"
+ * @property {String} statusBgColor The background color to apply in the status summary section of the poll question popup for this status eg."#9900cc"
+ * @property {String} statusFgColor The foreground color to apply in the status summary section of the poll question popup for this status eg. "#fff"
+ */