@webex/internal-plugin-user 3.0.0-beta.8 → 3.0.0-bnr.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/user.js CHANGED
@@ -1,37 +1,29 @@
1
1
  "use strict";
2
2
 
3
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor2 = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
3
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
10
  _Object$defineProperty(exports, "__esModule", {
8
11
  value: true
9
12
  });
10
-
11
13
  exports.default = void 0;
12
-
13
14
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
14
-
15
- var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
16
-
17
15
  var _apply = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/apply"));
18
-
19
16
  var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor"));
20
-
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
21
18
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/applyDecoratedDescriptor"));
22
-
23
19
  var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
24
-
25
20
  var _common = require("@webex/common");
26
-
27
21
  var _webexCore = require("@webex/webex-core");
28
-
29
22
  var _userUuidBatcher = _interopRequireDefault(require("./user-uuid-batcher"));
30
-
31
23
  var _userUuidStore = _interopRequireDefault(require("./user-uuid-store"));
32
-
33
24
  var _dec, _dec2, _dec3, _dec4, _obj;
34
-
25
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor2(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
26
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor2(source, key)); }); } return target; }
35
27
  /**
36
28
  * @class
37
29
  */
@@ -64,7 +56,6 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
64
56
  type: 'any'
65
57
  }
66
58
  },
67
-
68
59
  /**
69
60
  * Activates a Webex user account and exchanges for user token.
70
61
  * @instance
@@ -78,18 +69,16 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
78
69
  */
79
70
  activate: function activate() {
80
71
  var _this = this;
81
-
82
72
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
83
-
84
73
  if (!(options.verificationToken || options.confirmationCode && options.id)) {
85
74
  return _promise.default.reject(new Error('either options.verificationToken is required or both options.confirmationCode and options.id are required'));
86
75
  }
76
+ options.scope = this.webex.config.credentials.scope;
87
77
 
88
- options.scope = this.webex.config.credentials.scope; // if we have options.email and options.verificationToken
78
+ // if we have options.email and options.verificationToken
89
79
  // and Federation flag is enabled, flag that we need to
90
80
  // lookup user's CI.
91
-
92
- var activateOptions = (0, _assign.default)({}, options);
81
+ var activateOptions = _objectSpread({}, options);
93
82
  delete activateOptions.email;
94
83
  return this.request({
95
84
  uri: this.webex.config.credentials.activationUrl,
@@ -104,11 +93,9 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
104
93
  _this.webex.credentials.set({
105
94
  supertoken: res.body.tokenData
106
95
  });
107
-
108
96
  return res.body;
109
97
  });
110
98
  },
111
-
112
99
  /**
113
100
  * Converts a user-identifying object to a uuid, perhaps by doing a network
114
101
  * lookup
@@ -121,32 +108,24 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
121
108
  */
122
109
  asUUID: function asUUID(user, options) {
123
110
  var _this2 = this;
124
-
125
111
  if (!user) {
126
112
  return _promise.default.reject(new Error('`user` is required'));
127
113
  }
128
-
129
114
  if ((0, _isArray2.default)(user)) {
130
115
  return _promise.default.all(user.map(function (u) {
131
116
  return _this2.asUUID(u, options);
132
117
  }));
133
118
  }
134
-
135
119
  var id = this._extractUUID(user);
136
-
137
120
  if (!(options && options.force) && _common.patterns.uuid.test(id)) {
138
121
  return _promise.default.resolve(id);
139
122
  }
140
-
141
123
  var email = this._extractEmailAddress(user);
142
-
143
124
  if (!_common.patterns.email.test(email)) {
144
125
  return _promise.default.reject(new Error('Provided user object does not appear to identify a user'));
145
126
  }
146
-
147
127
  return this.getUUID(email, options);
148
128
  },
149
-
150
129
  /**
151
130
  * Requests a uuid from the api
152
131
  * @param {string} email
@@ -156,19 +135,17 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
156
135
  */
157
136
  fetchUUID: function fetchUUID(email, options) {
158
137
  var _this3 = this;
159
-
160
138
  return this.batcher.request({
161
139
  email: email,
162
140
  create: options && options.create
163
141
  }).then(function (user) {
164
- return _this3.recordUUID((0, _assign.default)({
142
+ return _this3.recordUUID(_objectSpread({
165
143
  emailAddress: email
166
144
  }, user)).then(function () {
167
145
  return user.id;
168
146
  });
169
147
  });
170
148
  },
171
-
172
149
  /**
173
150
  * Generates One Time Password.
174
151
  * @instance
@@ -179,11 +156,9 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
179
156
  */
180
157
  generateOTP: function generateOTP() {
181
158
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
182
-
183
159
  if (!(options.email || options.id)) {
184
160
  return _promise.default.reject(new Error('One of `options.email` or `options.id` is required'));
185
161
  }
186
-
187
162
  return this.request({
188
163
  uri: this.webex.config.credentials.generateOtpUrl,
189
164
  method: 'POST',
@@ -196,14 +171,12 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
196
171
  return res.body;
197
172
  });
198
173
  },
199
-
200
174
  /**
201
175
  * Fetches details about the current user
202
176
  * @returns {Promise<Object>}
203
177
  */
204
178
  get: function get() {
205
179
  var _this4 = this;
206
-
207
180
  return this.request({
208
181
  service: 'conversation',
209
182
  resource: 'users'
@@ -220,16 +193,13 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
220
193
  },
221
194
  getUUID: function getUUID(email, options) {
222
195
  var _this5 = this;
223
-
224
196
  return this.store.getByEmail(email).then(function (user) {
225
197
  if (options && options.create && !user.userExists) {
226
198
  return _promise.default.reject(new Error('User for specified email cannot be confirmed to exist'));
227
199
  }
228
-
229
200
  if (!user.id) {
230
201
  return _promise.default.reject(new Error('No id recorded for specified user'));
231
202
  }
232
-
233
203
  return user.id;
234
204
  }).catch(function () {
235
205
  return _this5.fetchUUID(email, options);
@@ -239,10 +209,8 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
239
209
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
240
210
  args[_key] = arguments[_key];
241
211
  }
242
-
243
212
  return (0, _apply.default)(_webexCore.WebexPlugin.prototype.initialize, this, args);
244
213
  },
245
-
246
214
  /**
247
215
  * Caches the uuid for the specified email address
248
216
  * @param {Object} user
@@ -254,29 +222,23 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
254
222
  if (!user) {
255
223
  return _promise.default.reject(new Error('`user` is required'));
256
224
  }
257
-
258
225
  if (!user.id) {
259
226
  return _promise.default.reject(new Error('`user.id` is required'));
260
227
  }
261
-
262
228
  if (!_common.patterns.uuid.test(user.id)) {
263
229
  return _promise.default.reject(new Error('`user.id` must be a uuid'));
264
230
  }
265
-
266
231
  if (!user.emailAddress) {
267
232
  return _promise.default.reject(new Error('`user.emailAddress` is required'));
268
233
  }
269
-
270
234
  if (!_common.patterns.email.test(user.emailAddress)) {
271
235
  return _promise.default.reject(new Error('`user.emailAddress` must be an email address'));
272
236
  }
273
-
274
237
  return this.store.add(user);
275
238
  },
276
239
  register: function register() {
277
240
  return this.verify.apply(this, arguments);
278
241
  },
279
-
280
242
  /**
281
243
  * Updates a user with webex.
282
244
  * @param {Object} body
@@ -285,7 +247,6 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
285
247
  */
286
248
  _setUser: function _setUser(body) {
287
249
  var _this6 = this;
288
-
289
250
  return this.webex.credentials.getUserToken().then(function (token) {
290
251
  return _this6.request({
291
252
  uri: "".concat(_this6.webex.config.credentials.setPasswordUrl, "/").concat(_this6.webex.internal.device.userId),
@@ -297,7 +258,6 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
297
258
  });
298
259
  });
299
260
  },
300
-
301
261
  /**
302
262
  * Updates a user's password with webex.
303
263
  * @instance
@@ -309,13 +269,10 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
309
269
  */
310
270
  setPassword: function setPassword(options) {
311
271
  var _this7 = this;
312
-
313
272
  options = options || {};
314
-
315
273
  if (!options.password) {
316
274
  return _promise.default.reject(new Error('`options.password` is required'));
317
275
  }
318
-
319
276
  return this._setUser({
320
277
  schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],
321
278
  password: options.password
@@ -324,7 +281,6 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
324
281
  return res.body;
325
282
  });
326
283
  },
327
-
328
284
  /**
329
285
  * Updates a user's name with webex.
330
286
  * @instance
@@ -336,14 +292,12 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
336
292
  */
337
293
  updateName: function updateName() {
338
294
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
339
- givenName = _ref.givenName,
340
- familyName = _ref.familyName,
341
- displayName = _ref.displayName;
342
-
295
+ givenName = _ref.givenName,
296
+ familyName = _ref.familyName,
297
+ displayName = _ref.displayName;
343
298
  if (!(givenName || familyName || displayName)) {
344
299
  return _promise.default.reject(new Error('One of `givenName` and `familyName` or `displayName` is required'));
345
300
  }
346
-
347
301
  return this._setUser({
348
302
  schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],
349
303
  name: {
@@ -355,7 +309,6 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
355
309
  return res.body;
356
310
  });
357
311
  },
358
-
359
312
  /**
360
313
  * Updates the current user's display name
361
314
  * @param {Object} options
@@ -364,11 +317,9 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
364
317
  */
365
318
  update: function update(options) {
366
319
  options = options || {};
367
-
368
320
  if (!options.displayName) {
369
321
  return _promise.default.reject(new Error('`options.displayName` is required'));
370
322
  }
371
-
372
323
  return this.request({
373
324
  method: 'PATCH',
374
325
  service: 'conversation',
@@ -378,7 +329,6 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
378
329
  return res.body;
379
330
  });
380
331
  },
381
-
382
332
  /**
383
333
  * Validated One Time Password.
384
334
  * @instance
@@ -390,13 +340,10 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
390
340
  */
391
341
  validateOTP: function validateOTP() {
392
342
  var _this8 = this;
393
-
394
343
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
395
-
396
344
  if (!(options.email || options.id) || !options.oneTimePassword) {
397
345
  return _promise.default.reject(new Error('One of `options.email` or `options.id` and `options.oneTimePassword` are required'));
398
346
  }
399
-
400
347
  options.scope = this.webex.config.credentials.scope;
401
348
  return this.request({
402
349
  uri: this.webex.config.credentials.validateOtpUrl,
@@ -410,11 +357,9 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
410
357
  _this8.webex.credentials.set({
411
358
  supertoken: res.body.tokenData
412
359
  });
413
-
414
360
  return res.body;
415
361
  });
416
362
  },
417
-
418
363
  /**
419
364
  * Determines if the specified user needs to signup or can signin.
420
365
  * Triggers activation email if client credentials are used
@@ -426,15 +371,12 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
426
371
  */
427
372
  verify: function verify(options) {
428
373
  var _this9 = this;
429
-
430
- options = (0, _assign.default)({}, this.config.verifyDefaults, options);
374
+ options = _objectSpread(_objectSpread({}, this.config.verifyDefaults), options);
431
375
  var _options = options,
432
- email = _options.email;
433
-
376
+ email = _options.email;
434
377
  if (!email) {
435
378
  return _promise.default.reject(new Error('`options.email` is required'));
436
379
  }
437
-
438
380
  return this.webex.internal.services.collectPreauthCatalog({
439
381
  email: email
440
382
  }).then(function () {
@@ -457,11 +399,9 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
457
399
  if (res.body.hasPassword || res.body.sso) {
458
400
  _this9.hasPassword = true;
459
401
  }
460
-
461
402
  return res.body;
462
403
  });
463
404
  },
464
-
465
405
  /**
466
406
  * If the passed-in lookupCI is true, retrieve the user's
467
407
  * CI from Atlas and return the URL's via a Promise.
@@ -485,13 +425,11 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
485
425
  return _promise.default.resolve(res.userEntities);
486
426
  });
487
427
  }
488
-
489
428
  return _promise.default.resolve({
490
429
  idBrokerUrl: this.webex.config.credentials.idbroker.url,
491
430
  identityUrl: this.webex.config.credentials.identity.url
492
431
  });
493
432
  },
494
-
495
433
  /**
496
434
  * Extracts the uuid from a user identifying object
497
435
  * @param {string|Object} user
@@ -501,7 +439,6 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
501
439
  _extractUUID: function _extractUUID(user) {
502
440
  return user.entryUUID || user.id || user;
503
441
  },
504
-
505
442
  /**
506
443
  * Extracts the email address from a user identifying object
507
444
  * @param {string|Object} user
@@ -511,9 +448,8 @@ var User = _webexCore.WebexPlugin.extend((_dec = (0, _webexCore.waitForValue)('@
511
448
  _extractEmailAddress: function _extractEmailAddress(user) {
512
449
  return user.email || user.emailAddress || user.entryEmail || user;
513
450
  },
514
- version: "3.0.0-beta.8"
451
+ version: "3.0.0-bnr.0"
515
452
  }, ((0, _applyDecoratedDescriptor2.default)(_obj, "activate", [_dec], (0, _getOwnPropertyDescriptor.default)(_obj, "activate"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "getUUID", [_dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "getUUID"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "initialize", [_dec3], (0, _getOwnPropertyDescriptor.default)(_obj, "initialize"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "register", [_dec4], (0, _getOwnPropertyDescriptor.default)(_obj, "register"), _obj)), _obj)));
516
-
517
453
  var _default2 = User;
518
454
  exports.default = _default2;
519
455
  //# sourceMappingURL=user.js.map
package/dist/user.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["User","WebexPlugin","extend","waitForValue","oneFlight","keyFactory","email","options","String","create","persist","deprecated","namespace","children","batcher","UserUUIDBatcher","props","hasPassword","default","type","session","store","UserUUIDStore","activate","verificationToken","confirmationCode","id","reject","Error","scope","webex","config","credentials","activateOptions","request","uri","activationUrl","method","body","auth","user","client_id","pass","client_secret","sendImmediately","then","res","set","supertoken","tokenData","asUUID","all","map","u","_extractUUID","force","patterns","uuid","test","resolve","_extractEmailAddress","getUUID","fetchUUID","recordUUID","emailAddress","generateOTP","generateOtpUrl","get","service","resource","tap","getByEmail","userExists","catch","initialize","args","prototype","add","register","verify","_setUser","getUserToken","token","setPasswordUrl","internal","device","userId","headers","authorization","toString","setPassword","password","schemas","updateName","givenName","familyName","displayName","name","update","validateOTP","oneTimePassword","validateOtpUrl","verifyDefaults","services","collectPreauthCatalog","getClientToken","preloginId","shouldRefreshAccessToken","sso","getUserCI","lookupCI","verifyOptions","suppressEmail","userEntities","idBrokerUrl","idbroker","url","identityUrl","identity","entryUUID","entryEmail"],"sources":["user.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {isArray} from 'lodash';\nimport {deprecated, oneFlight, patterns, tap} from '@webex/common';\nimport {persist, WebexPlugin, waitForValue} from '@webex/webex-core';\n\nimport UserUUIDBatcher from './user-uuid-batcher';\nimport UserUUIDStore from './user-uuid-store';\n\n/**\n * @class\n */\nconst User = WebexPlugin.extend({\n namespace: 'User',\n\n children: {\n batcher: UserUUIDBatcher\n },\n\n props: {\n /**\n * Indicates if the current user is known to have a password.\n * @instance\n * @memberof User\n * @type {boolean}\n */\n hasPassword: {\n default: false,\n type: 'boolean'\n }\n },\n\n session: {\n store: {\n default() {\n return new UserUUIDStore();\n },\n type: 'any'\n }\n },\n\n @waitForValue('@')\n /**\n * Activates a Webex user account and exchanges for user token.\n * @instance\n * @memberof User\n * @param {Object} options\n * @param {Object} options.confirmationCode (required -- optional if verification token is provided)\n * @param {Object} options.id (required -- optional if verification token is provided)\n * @param {Object} options.verificationToken (required -- optional if uuid and verification token provided)\n * @param {Object} options.email (required with verificationToken for Federation/global user)\n * @returns {Promise} Resolves with a userSession\n */\n activate(options = {}) {\n if (!(options.verificationToken || (options.confirmationCode && options.id))) {\n return Promise.reject(new Error('either options.verificationToken is required or both options.confirmationCode and options.id are required'));\n }\n\n options.scope = this.webex.config.credentials.scope;\n\n // if we have options.email and options.verificationToken\n // and Federation flag is enabled, flag that we need to\n // lookup user's CI.\n const activateOptions = Object.assign({}, options);\n\n delete activateOptions.email;\n\n return this.request({\n uri: this.webex.config.credentials.activationUrl,\n method: 'POST',\n body: activateOptions,\n auth: {\n user: this.webex.config.credentials.client_id,\n pass: this.webex.config.credentials.client_secret,\n sendImmediately: true\n }\n })\n .then((res) => {\n this.webex.credentials.set({supertoken: res.body.tokenData});\n\n return res.body;\n });\n },\n\n /**\n * Converts a user-identifying object to a uuid, perhaps by doing a network\n * lookup\n * @param {string|Object} user\n * @param {Object} options\n * @param {boolean} options.create if true, ensures the return UUID refers to\n * an existing user (rather than creating one deterministically based on email\n * address), even if that user must be created\n * @returns {Promise<string>}\n */\n asUUID(user, options) {\n if (!user) {\n return Promise.reject(new Error('`user` is required'));\n }\n\n if (isArray(user)) {\n return Promise.all(user.map((u) => this.asUUID(u, options)));\n }\n\n const id = this._extractUUID(user);\n\n if (!(options && options.force) && patterns.uuid.test(id)) {\n return Promise.resolve(id);\n }\n\n const email = this._extractEmailAddress(user);\n\n if (!patterns.email.test(email)) {\n return Promise.reject(new Error('Provided user object does not appear to identify a user'));\n }\n\n return this.getUUID(email, options);\n },\n\n /**\n * Requests a uuid from the api\n * @param {string} email\n * @param {Object} options\n * @param {boolean} options.create\n * @returns {Promise<string>}\n */\n fetchUUID(email, options) {\n return this.batcher.request({\n email,\n create: options && options.create\n })\n .then((user) => this.recordUUID(Object.assign({emailAddress: email}, user))\n .then(() => user.id));\n },\n /**\n * Generates One Time Password.\n * @instance\n * @param {Object} options\n * @param {string} options.email\n * @param {string} options.id\n * @returns {Promise}\n */\n generateOTP(options = {}) {\n if (!(options.email || options.id)) {\n return Promise.reject(new Error('One of `options.email` or `options.id` is required'));\n }\n\n return this.request({\n uri: this.webex.config.credentials.generateOtpUrl,\n method: 'POST',\n body: options,\n auth: {\n user: this.webex.config.credentials.client_id,\n pass: this.webex.config.credentials.client_secret\n }\n })\n .then((res) => res.body);\n },\n\n /**\n * Fetches details about the current user\n * @returns {Promise<Object>}\n */\n get() {\n return this.request({\n service: 'conversation',\n resource: 'users'\n })\n .then((res) => res.body)\n .then(tap((user) => this.recordUUID({\n id: user.id,\n // CI endpoints don't use the same user format as actors, so, email may\n // be in one of a few fields\n emailAddress: user.email || user.emailAddress\n })));\n },\n\n /**\n * Converts an email address to a uuid, perhaps by doing a network lookup\n * @param {string} email\n * @param {Object} options\n * @param {boolean} options.create\n * @returns {Promise<string>}\n */\n @oneFlight({keyFactory: (email, options) => email + String(options && options.create)})\n getUUID(email, options) {\n return this.store.getByEmail(email)\n .then((user) => {\n if (options && options.create && !user.userExists) {\n return Promise.reject(new Error('User for specified email cannot be confirmed to exist'));\n }\n\n if (!user.id) {\n return Promise.reject(new Error('No id recorded for specified user'));\n }\n\n return user.id;\n })\n .catch(() => this.fetchUUID(email, options));\n },\n\n @persist('@')\n initialize(...args) {\n return Reflect.apply(WebexPlugin.prototype.initialize, this, args);\n },\n\n /**\n * Caches the uuid for the specified email address\n * @param {Object} user\n * @param {string} user.id\n * @param {string} user.emailAddress\n * @returns {Promise}\n */\n recordUUID(user) {\n if (!user) {\n return Promise.reject(new Error('`user` is required'));\n }\n\n if (!user.id) {\n return Promise.reject(new Error('`user.id` is required'));\n }\n\n if (!patterns.uuid.test(user.id)) {\n return Promise.reject(new Error('`user.id` must be a uuid'));\n }\n\n if (!user.emailAddress) {\n return Promise.reject(new Error('`user.emailAddress` is required'));\n }\n\n if (!patterns.email.test(user.emailAddress)) {\n return Promise.reject(new Error('`user.emailAddress` must be an email address'));\n }\n\n return this.store.add(user);\n },\n\n @deprecated('Use User#verify()')\n register(...args) {\n return this.verify(...args);\n },\n\n /**\n * Updates a user with webex.\n * @param {Object} body\n * @private\n * @returns {Promise} Resolves with a response from PATCH request\n */\n _setUser(body) {\n return this.webex.credentials.getUserToken()\n .then((token) => this.request({\n uri: `${this.webex.config.credentials.setPasswordUrl}/${this.webex.internal.device.userId}`,\n method: 'PATCH',\n headers: {\n authorization: token.toString()\n },\n body\n }));\n },\n\n /**\n * Updates a user's password with webex.\n * @instance\n * @memberof User\n * @param {Object} options\n * @param {string} options.password (required)\n * @param {string} options.email (required when federation enabled)\n * @returns {Promise} Resolves with complete user object containing new password\n */\n setPassword(options) {\n options = options || {};\n if (!options.password) {\n return Promise.reject(new Error('`options.password` is required'));\n }\n\n return this._setUser({\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n password: options.password\n })\n .then((res) => {\n this.hasPassword = true;\n\n return res.body;\n });\n },\n\n /**\n * Updates a user's name with webex.\n * @instance\n * @memberof User\n * @param {string} givenName\n * @param {string} familyName\n * @param {string} displayName\n * @returns {Promise<Object>}\n */\n updateName({givenName, familyName, displayName} = {}) {\n if (!(givenName || familyName || displayName)) {\n return Promise.reject(new Error('One of `givenName` and `familyName` or `displayName` is required'));\n }\n\n return this._setUser({\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n name: {givenName, familyName},\n displayName\n })\n .then((res) => res.body);\n },\n\n /**\n * Updates the current user's display name\n * @param {Object} options\n * @param {string} options.displayName\n * @returns {Promise<Object>}\n */\n update(options) {\n options = options || {};\n if (!options.displayName) {\n return Promise.reject(new Error('`options.displayName` is required'));\n }\n\n return this.request({\n method: 'PATCH',\n service: 'conversation',\n resource: 'users/user',\n body: options\n })\n .then((res) => res.body);\n },\n\n /**\n * Validated One Time Password.\n * @instance\n * @param {Object} options\n * @param {string} options.email\n * @param {string} options.id\n * @param {string} options.oneTimePassword\n * @returns {Promise}\n */\n validateOTP(options = {}) {\n if (!(options.email || options.id) || !options.oneTimePassword) {\n return Promise.reject(new Error('One of `options.email` or `options.id` and `options.oneTimePassword` are required'));\n }\n\n options.scope = this.webex.config.credentials.scope;\n\n return this.request({\n uri: this.webex.config.credentials.validateOtpUrl,\n method: 'POST',\n body: options,\n auth: {\n user: this.webex.config.credentials.client_id,\n pass: this.webex.config.credentials.client_secret\n }\n })\n .then((res) => {\n this.webex.credentials.set({supertoken: res.body.tokenData});\n\n return res.body;\n });\n },\n\n /**\n * Determines if the specified user needs to signup or can signin.\n * Triggers activation email if client credentials are used\n * @param {Object} options\n * @param {string} options.email (required)\n * @param {string} options.reqId required if need to check email status\n * @param {string} options.preloginId\n * @returns {Promise<Object>}\n */\n verify(options) {\n options = Object.assign({}, this.config.verifyDefaults, options);\n const {email} = options;\n\n if (!email) {\n return Promise.reject(new Error('`options.email` is required'));\n }\n\n return this.webex.internal.services.collectPreauthCatalog({email})\n .then(() => this.webex.credentials.getUserToken())\n .catch(() => this.webex.credentials.getClientToken())\n .then((token) => this.request({\n service: 'atlas',\n resource: 'users/activations',\n method: 'POST',\n headers: {\n authorization: token.toString(),\n 'x-prelogin-userid': options.preloginId\n },\n body: options,\n shouldRefreshAccessToken: false\n }))\n .then((res) => {\n if (res.body.hasPassword || res.body.sso) {\n this.hasPassword = true;\n }\n\n return res.body;\n });\n },\n\n\n /**\n * If the passed-in lookupCI is true, retrieve the user's\n * CI from Atlas and return the URL's via a Promise.\n * Otherwise, return current CI in config via a Promise.\n * Useful in a Promise chain to retrieve the CI based on\n * conditions like Federation enabled, and suppresses sending\n * an additional email to the user, since this is just a\n * look-up.\n * @param {string} email (required)\n * @param {boolean} lookupCI (required)\n * @returns {Promise<Object>}\n */\n getUserCI(email, lookupCI) {\n if (lookupCI) {\n // call verify first to get the user's CI, but suppress sending another email\n const verifyOptions = {\n email,\n suppressEmail: true\n };\n\n return this.verify(verifyOptions).then((res) => Promise.resolve(res.userEntities));\n }\n\n return Promise.resolve(\n {\n idBrokerUrl: this.webex.config.credentials.idbroker.url,\n identityUrl: this.webex.config.credentials.identity.url\n }\n );\n },\n\n /**\n * Extracts the uuid from a user identifying object\n * @param {string|Object} user\n * @private\n * @returns {string}\n */\n _extractUUID(user) {\n return user.entryUUID || user.id || user;\n },\n\n /**\n * Extracts the email address from a user identifying object\n * @param {string|Object} user\n * @private\n * @returns {string}\n */\n _extractEmailAddress(user) {\n return user.email || user.emailAddress || user.entryEmail || user;\n }\n\n});\n\nexport default User;\n"],"mappings":"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"}
1
+ {"version":3,"names":["User","WebexPlugin","extend","waitForValue","oneFlight","keyFactory","email","options","String","create","persist","deprecated","namespace","children","batcher","UserUUIDBatcher","props","hasPassword","default","type","session","store","UserUUIDStore","activate","verificationToken","confirmationCode","id","reject","Error","scope","webex","config","credentials","activateOptions","request","uri","activationUrl","method","body","auth","user","client_id","pass","client_secret","sendImmediately","then","res","set","supertoken","tokenData","asUUID","all","map","u","_extractUUID","force","patterns","uuid","test","resolve","_extractEmailAddress","getUUID","fetchUUID","recordUUID","emailAddress","generateOTP","generateOtpUrl","get","service","resource","tap","getByEmail","userExists","catch","initialize","args","prototype","add","register","verify","_setUser","getUserToken","token","setPasswordUrl","internal","device","userId","headers","authorization","toString","setPassword","password","schemas","updateName","givenName","familyName","displayName","name","update","validateOTP","oneTimePassword","validateOtpUrl","verifyDefaults","services","collectPreauthCatalog","getClientToken","preloginId","shouldRefreshAccessToken","sso","getUserCI","lookupCI","verifyOptions","suppressEmail","userEntities","idBrokerUrl","idbroker","url","identityUrl","identity","entryUUID","entryEmail"],"sources":["user.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {isArray} from 'lodash';\nimport {deprecated, oneFlight, patterns, tap} from '@webex/common';\nimport {persist, WebexPlugin, waitForValue} from '@webex/webex-core';\n\nimport UserUUIDBatcher from './user-uuid-batcher';\nimport UserUUIDStore from './user-uuid-store';\n\n/**\n * @class\n */\nconst User = WebexPlugin.extend({\n namespace: 'User',\n\n children: {\n batcher: UserUUIDBatcher,\n },\n\n props: {\n /**\n * Indicates if the current user is known to have a password.\n * @instance\n * @memberof User\n * @type {boolean}\n */\n hasPassword: {\n default: false,\n type: 'boolean',\n },\n },\n\n session: {\n store: {\n default() {\n return new UserUUIDStore();\n },\n type: 'any',\n },\n },\n\n @waitForValue('@')\n /**\n * Activates a Webex user account and exchanges for user token.\n * @instance\n * @memberof User\n * @param {Object} options\n * @param {Object} options.confirmationCode (required -- optional if verification token is provided)\n * @param {Object} options.id (required -- optional if verification token is provided)\n * @param {Object} options.verificationToken (required -- optional if uuid and verification token provided)\n * @param {Object} options.email (required with verificationToken for Federation/global user)\n * @returns {Promise} Resolves with a userSession\n */\n activate(options = {}) {\n if (!(options.verificationToken || (options.confirmationCode && options.id))) {\n return Promise.reject(\n new Error(\n 'either options.verificationToken is required or both options.confirmationCode and options.id are required'\n )\n );\n }\n\n options.scope = this.webex.config.credentials.scope;\n\n // if we have options.email and options.verificationToken\n // and Federation flag is enabled, flag that we need to\n // lookup user's CI.\n const activateOptions = {...options};\n\n delete activateOptions.email;\n\n return this.request({\n uri: this.webex.config.credentials.activationUrl,\n method: 'POST',\n body: activateOptions,\n auth: {\n user: this.webex.config.credentials.client_id,\n pass: this.webex.config.credentials.client_secret,\n sendImmediately: true,\n },\n }).then((res) => {\n this.webex.credentials.set({supertoken: res.body.tokenData});\n\n return res.body;\n });\n },\n\n /**\n * Converts a user-identifying object to a uuid, perhaps by doing a network\n * lookup\n * @param {string|Object} user\n * @param {Object} options\n * @param {boolean} options.create if true, ensures the return UUID refers to\n * an existing user (rather than creating one deterministically based on email\n * address), even if that user must be created\n * @returns {Promise<string>}\n */\n asUUID(user, options) {\n if (!user) {\n return Promise.reject(new Error('`user` is required'));\n }\n\n if (isArray(user)) {\n return Promise.all(user.map((u) => this.asUUID(u, options)));\n }\n\n const id = this._extractUUID(user);\n\n if (!(options && options.force) && patterns.uuid.test(id)) {\n return Promise.resolve(id);\n }\n\n const email = this._extractEmailAddress(user);\n\n if (!patterns.email.test(email)) {\n return Promise.reject(new Error('Provided user object does not appear to identify a user'));\n }\n\n return this.getUUID(email, options);\n },\n\n /**\n * Requests a uuid from the api\n * @param {string} email\n * @param {Object} options\n * @param {boolean} options.create\n * @returns {Promise<string>}\n */\n fetchUUID(email, options) {\n return this.batcher\n .request({\n email,\n create: options && options.create,\n })\n .then((user) => this.recordUUID({emailAddress: email, ...user}).then(() => user.id));\n },\n /**\n * Generates One Time Password.\n * @instance\n * @param {Object} options\n * @param {string} options.email\n * @param {string} options.id\n * @returns {Promise}\n */\n generateOTP(options = {}) {\n if (!(options.email || options.id)) {\n return Promise.reject(new Error('One of `options.email` or `options.id` is required'));\n }\n\n return this.request({\n uri: this.webex.config.credentials.generateOtpUrl,\n method: 'POST',\n body: options,\n auth: {\n user: this.webex.config.credentials.client_id,\n pass: this.webex.config.credentials.client_secret,\n },\n }).then((res) => res.body);\n },\n\n /**\n * Fetches details about the current user\n * @returns {Promise<Object>}\n */\n get() {\n return this.request({\n service: 'conversation',\n resource: 'users',\n })\n .then((res) => res.body)\n .then(\n tap((user) =>\n this.recordUUID({\n id: user.id,\n // CI endpoints don't use the same user format as actors, so, email may\n // be in one of a few fields\n emailAddress: user.email || user.emailAddress,\n })\n )\n );\n },\n\n /**\n * Converts an email address to a uuid, perhaps by doing a network lookup\n * @param {string} email\n * @param {Object} options\n * @param {boolean} options.create\n * @returns {Promise<string>}\n */\n @oneFlight({keyFactory: (email, options) => email + String(options && options.create)})\n getUUID(email, options) {\n return this.store\n .getByEmail(email)\n .then((user) => {\n if (options && options.create && !user.userExists) {\n return Promise.reject(new Error('User for specified email cannot be confirmed to exist'));\n }\n\n if (!user.id) {\n return Promise.reject(new Error('No id recorded for specified user'));\n }\n\n return user.id;\n })\n .catch(() => this.fetchUUID(email, options));\n },\n\n @persist('@')\n initialize(...args) {\n return Reflect.apply(WebexPlugin.prototype.initialize, this, args);\n },\n\n /**\n * Caches the uuid for the specified email address\n * @param {Object} user\n * @param {string} user.id\n * @param {string} user.emailAddress\n * @returns {Promise}\n */\n recordUUID(user) {\n if (!user) {\n return Promise.reject(new Error('`user` is required'));\n }\n\n if (!user.id) {\n return Promise.reject(new Error('`user.id` is required'));\n }\n\n if (!patterns.uuid.test(user.id)) {\n return Promise.reject(new Error('`user.id` must be a uuid'));\n }\n\n if (!user.emailAddress) {\n return Promise.reject(new Error('`user.emailAddress` is required'));\n }\n\n if (!patterns.email.test(user.emailAddress)) {\n return Promise.reject(new Error('`user.emailAddress` must be an email address'));\n }\n\n return this.store.add(user);\n },\n\n @deprecated('Use User#verify()')\n register(...args) {\n return this.verify(...args);\n },\n\n /**\n * Updates a user with webex.\n * @param {Object} body\n * @private\n * @returns {Promise} Resolves with a response from PATCH request\n */\n _setUser(body) {\n return this.webex.credentials.getUserToken().then((token) =>\n this.request({\n uri: `${this.webex.config.credentials.setPasswordUrl}/${this.webex.internal.device.userId}`,\n method: 'PATCH',\n headers: {\n authorization: token.toString(),\n },\n body,\n })\n );\n },\n\n /**\n * Updates a user's password with webex.\n * @instance\n * @memberof User\n * @param {Object} options\n * @param {string} options.password (required)\n * @param {string} options.email (required when federation enabled)\n * @returns {Promise} Resolves with complete user object containing new password\n */\n setPassword(options) {\n options = options || {};\n if (!options.password) {\n return Promise.reject(new Error('`options.password` is required'));\n }\n\n return this._setUser({\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n password: options.password,\n }).then((res) => {\n this.hasPassword = true;\n\n return res.body;\n });\n },\n\n /**\n * Updates a user's name with webex.\n * @instance\n * @memberof User\n * @param {string} givenName\n * @param {string} familyName\n * @param {string} displayName\n * @returns {Promise<Object>}\n */\n updateName({givenName, familyName, displayName} = {}) {\n if (!(givenName || familyName || displayName)) {\n return Promise.reject(\n new Error('One of `givenName` and `familyName` or `displayName` is required')\n );\n }\n\n return this._setUser({\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n name: {givenName, familyName},\n displayName,\n }).then((res) => res.body);\n },\n\n /**\n * Updates the current user's display name\n * @param {Object} options\n * @param {string} options.displayName\n * @returns {Promise<Object>}\n */\n update(options) {\n options = options || {};\n if (!options.displayName) {\n return Promise.reject(new Error('`options.displayName` is required'));\n }\n\n return this.request({\n method: 'PATCH',\n service: 'conversation',\n resource: 'users/user',\n body: options,\n }).then((res) => res.body);\n },\n\n /**\n * Validated One Time Password.\n * @instance\n * @param {Object} options\n * @param {string} options.email\n * @param {string} options.id\n * @param {string} options.oneTimePassword\n * @returns {Promise}\n */\n validateOTP(options = {}) {\n if (!(options.email || options.id) || !options.oneTimePassword) {\n return Promise.reject(\n new Error(\n 'One of `options.email` or `options.id` and `options.oneTimePassword` are required'\n )\n );\n }\n\n options.scope = this.webex.config.credentials.scope;\n\n return this.request({\n uri: this.webex.config.credentials.validateOtpUrl,\n method: 'POST',\n body: options,\n auth: {\n user: this.webex.config.credentials.client_id,\n pass: this.webex.config.credentials.client_secret,\n },\n }).then((res) => {\n this.webex.credentials.set({supertoken: res.body.tokenData});\n\n return res.body;\n });\n },\n\n /**\n * Determines if the specified user needs to signup or can signin.\n * Triggers activation email if client credentials are used\n * @param {Object} options\n * @param {string} options.email (required)\n * @param {string} options.reqId required if need to check email status\n * @param {string} options.preloginId\n * @returns {Promise<Object>}\n */\n verify(options) {\n options = {...this.config.verifyDefaults, ...options};\n const {email} = options;\n\n if (!email) {\n return Promise.reject(new Error('`options.email` is required'));\n }\n\n return this.webex.internal.services\n .collectPreauthCatalog({email})\n .then(() => this.webex.credentials.getUserToken())\n .catch(() => this.webex.credentials.getClientToken())\n .then((token) =>\n this.request({\n service: 'atlas',\n resource: 'users/activations',\n method: 'POST',\n headers: {\n authorization: token.toString(),\n 'x-prelogin-userid': options.preloginId,\n },\n body: options,\n shouldRefreshAccessToken: false,\n })\n )\n .then((res) => {\n if (res.body.hasPassword || res.body.sso) {\n this.hasPassword = true;\n }\n\n return res.body;\n });\n },\n\n /**\n * If the passed-in lookupCI is true, retrieve the user's\n * CI from Atlas and return the URL's via a Promise.\n * Otherwise, return current CI in config via a Promise.\n * Useful in a Promise chain to retrieve the CI based on\n * conditions like Federation enabled, and suppresses sending\n * an additional email to the user, since this is just a\n * look-up.\n * @param {string} email (required)\n * @param {boolean} lookupCI (required)\n * @returns {Promise<Object>}\n */\n getUserCI(email, lookupCI) {\n if (lookupCI) {\n // call verify first to get the user's CI, but suppress sending another email\n const verifyOptions = {\n email,\n suppressEmail: true,\n };\n\n return this.verify(verifyOptions).then((res) => Promise.resolve(res.userEntities));\n }\n\n return Promise.resolve({\n idBrokerUrl: this.webex.config.credentials.idbroker.url,\n identityUrl: this.webex.config.credentials.identity.url,\n });\n },\n\n /**\n * Extracts the uuid from a user identifying object\n * @param {string|Object} user\n * @private\n * @returns {string}\n */\n _extractUUID(user) {\n return user.entryUUID || user.id || user;\n },\n\n /**\n * Extracts the email address from a user identifying object\n * @param {string|Object} user\n * @private\n * @returns {string}\n */\n _extractEmailAddress(user) {\n return user.email || user.emailAddress || user.entryEmail || user;\n },\n});\n\nexport default User;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-user",
3
- "version": "3.0.0-beta.8",
3
+ "version": "3.0.0-bnr.0",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -23,13 +23,13 @@
23
23
  "sinon": "^9.2.4"
24
24
  },
25
25
  "dependencies": {
26
- "@webex/common": "3.0.0-beta.8",
27
- "@webex/internal-plugin-device": "3.0.0-beta.8",
28
- "@webex/internal-plugin-user": "3.0.0-beta.8",
29
- "@webex/test-helper-chai": "3.0.0-beta.8",
30
- "@webex/test-helper-mock-webex": "3.0.0-beta.8",
31
- "@webex/test-helper-test-users": "3.0.0-beta.8",
32
- "@webex/webex-core": "3.0.0-beta.8",
26
+ "@webex/common": "3.0.0-bnr.0",
27
+ "@webex/internal-plugin-device": "3.0.0-bnr.0",
28
+ "@webex/internal-plugin-user": "3.0.0-bnr.0",
29
+ "@webex/test-helper-chai": "3.0.0-bnr.0",
30
+ "@webex/test-helper-mock-webex": "3.0.0-bnr.0",
31
+ "@webex/test-helper-test-users": "3.0.0-bnr.0",
32
+ "@webex/webex-core": "3.0.0-bnr.0",
33
33
  "lodash": "^4.17.21",
34
34
  "uuid": "^3.3.2"
35
35
  }
package/src/config.js CHANGED
@@ -6,8 +6,8 @@ export default {
6
6
  device: {
7
7
  preDiscoveryServices: {
8
8
  atlasServiceUrl: process.env.ATLAS_SERVICE_URL || 'https://atlas-a.wbx2.com/admin/api/v1',
9
- atlas: process.env.ATLAS_SERVICE_URL || 'https://atlas-a.wbx2.com/admin/api/v1'
10
- }
9
+ atlas: process.env.ATLAS_SERVICE_URL || 'https://atlas-a.wbx2.com/admin/api/v1',
10
+ },
11
11
  },
12
12
 
13
13
  user: {
@@ -15,7 +15,7 @@ export default {
15
15
  batcherMaxCalls: 100,
16
16
  batcherMaxWait: 1500,
17
17
  verifyDefaults: {
18
- reqId: 'WEBCLIENT'
19
- }
20
- }
18
+ reqId: 'WEBCLIENT',
19
+ },
20
+ },
21
21
  };
package/src/index.js CHANGED
@@ -1,16 +1,15 @@
1
1
  /*!
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
+ import '@webex/internal-plugin-device';
4
5
 
5
6
  import {registerInternalPlugin} from '@webex/webex-core';
6
7
 
7
8
  import User from './user';
8
9
  import config from './config';
9
10
 
10
- import '@webex/internal-plugin-device';
11
-
12
11
  registerInternalPlugin('user', User, {
13
- config
12
+ config,
14
13
  });
15
14
 
16
15
  export {default} from './user';