vault/ui/app/utils/identity-manager.js
Jordan Reimer eb70bfdc5b
Identity manager secure context fallback (#19403)
* adds check for isSecureContext in identity-manager and falls back to incrementing ids

* adds uuid package to replace crypto.randomUUID

* adds test for okta number challenge nonce value validation
2023-02-28 12:26:10 -07:00

49 lines
932 B
JavaScript

import { v4 as uuidv4 } from 'uuid';
// manage a set of unique ids
export default class {
constructor() {
this.ids = new Set();
}
/**
* Returns a unique identifier.
*
* @method fetch
* @param {Object} data Records attributes hash
* @return {String} Unique identifier
* @public
*/
fetch() {
let uuid = uuidv4();
// odds are incredibly low that we'll run into a duplicate but just to be safe...
while (this.ids.has(uuid)) {
uuid = uuidv4();
}
this.ids.add(uuid);
return uuid;
}
/**
* Register an identifier.
* Must throw if identifier is already used.
*
* @method set
* @param {String|Number} id
* @public
*/
set(id) {
if (this.ids.has(id)) {
throw new Error(`ID ${id} is in use.`);
}
this.ids.add(id);
}
/**
* Reset identity manager.
*
* @method reset
* @public
*/
reset() {
this.ids.clear();
}
}