matrix-react-sdk
Version:
SDK for matrix.org using React
88 lines (80 loc) • 8.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.persistOidcAuthenticatedSettings = exports.getStoredOidcTokenIssuer = exports.getStoredOidcIdTokenClaims = exports.getStoredOidcIdToken = exports.getStoredOidcClientId = void 0;
var _matrix = require("matrix-js-sdk/src/matrix");
/*
Copyright 2024 New Vector Ltd.
Copyright 2023 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
const clientIdStorageKey = "mx_oidc_client_id";
const tokenIssuerStorageKey = "mx_oidc_token_issuer";
const idTokenStorageKey = "mx_oidc_id_token";
/**
* @deprecated in favour of using idTokenStorageKey
*/
const idTokenClaimsStorageKey = "mx_oidc_id_token_claims";
/**
* Persists oidc clientId and issuer in local storage
* Only set after successful authentication
* @param clientId
* @param issuer
* @param idToken
* @param idTokenClaims
*/
const persistOidcAuthenticatedSettings = (clientId, issuer, idToken) => {
localStorage.setItem(clientIdStorageKey, clientId);
localStorage.setItem(tokenIssuerStorageKey, issuer);
localStorage.setItem(idTokenStorageKey, idToken);
};
/**
* Retrieve stored oidc issuer from local storage
* When user has token from OIDC issuer, this will be set
* @returns issuer or undefined
*/
exports.persistOidcAuthenticatedSettings = persistOidcAuthenticatedSettings;
const getStoredOidcTokenIssuer = () => {
return localStorage.getItem(tokenIssuerStorageKey) ?? undefined;
};
/**
* Retrieves stored oidc client id from local storage
* @returns clientId
* @throws when clientId is not found in local storage
*/
exports.getStoredOidcTokenIssuer = getStoredOidcTokenIssuer;
const getStoredOidcClientId = () => {
const clientId = localStorage.getItem(clientIdStorageKey);
if (!clientId) {
throw new Error("Oidc client id not found in storage");
}
return clientId;
};
/**
* Retrieve stored id token claims from stored id token or local storage
* @returns idTokenClaims or undefined
*/
exports.getStoredOidcClientId = getStoredOidcClientId;
const getStoredOidcIdTokenClaims = () => {
const idToken = getStoredOidcIdToken();
if (idToken) {
return (0, _matrix.decodeIdToken)(idToken);
}
const idTokenClaims = localStorage.getItem(idTokenClaimsStorageKey);
if (!idTokenClaims) {
return;
}
return JSON.parse(idTokenClaims);
};
/**
* Retrieve stored id token from local storage
* @returns idToken or undefined
*/
exports.getStoredOidcIdTokenClaims = getStoredOidcIdTokenClaims;
const getStoredOidcIdToken = () => {
return localStorage.getItem(idTokenStorageKey) ?? undefined;
};
exports.getStoredOidcIdToken = getStoredOidcIdToken;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsImNsaWVudElkU3RvcmFnZUtleSIsInRva2VuSXNzdWVyU3RvcmFnZUtleSIsImlkVG9rZW5TdG9yYWdlS2V5IiwiaWRUb2tlbkNsYWltc1N0b3JhZ2VLZXkiLCJwZXJzaXN0T2lkY0F1dGhlbnRpY2F0ZWRTZXR0aW5ncyIsImNsaWVudElkIiwiaXNzdWVyIiwiaWRUb2tlbiIsImxvY2FsU3RvcmFnZSIsInNldEl0ZW0iLCJleHBvcnRzIiwiZ2V0U3RvcmVkT2lkY1Rva2VuSXNzdWVyIiwiZ2V0SXRlbSIsInVuZGVmaW5lZCIsImdldFN0b3JlZE9pZGNDbGllbnRJZCIsIkVycm9yIiwiZ2V0U3RvcmVkT2lkY0lkVG9rZW5DbGFpbXMiLCJnZXRTdG9yZWRPaWRjSWRUb2tlbiIsImRlY29kZUlkVG9rZW4iLCJpZFRva2VuQ2xhaW1zIiwiSlNPTiIsInBhcnNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL29pZGMvcGVyc2lzdE9pZGNTZXR0aW5ncy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMyBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBJZFRva2VuQ2xhaW1zIH0gZnJvbSBcIm9pZGMtY2xpZW50LXRzXCI7XG5pbXBvcnQgeyBkZWNvZGVJZFRva2VuIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5jb25zdCBjbGllbnRJZFN0b3JhZ2VLZXkgPSBcIm14X29pZGNfY2xpZW50X2lkXCI7XG5jb25zdCB0b2tlbklzc3VlclN0b3JhZ2VLZXkgPSBcIm14X29pZGNfdG9rZW5faXNzdWVyXCI7XG5jb25zdCBpZFRva2VuU3RvcmFnZUtleSA9IFwibXhfb2lkY19pZF90b2tlblwiO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdXNpbmcgaWRUb2tlblN0b3JhZ2VLZXlcbiAqL1xuY29uc3QgaWRUb2tlbkNsYWltc1N0b3JhZ2VLZXkgPSBcIm14X29pZGNfaWRfdG9rZW5fY2xhaW1zXCI7XG5cbi8qKlxuICogUGVyc2lzdHMgb2lkYyBjbGllbnRJZCBhbmQgaXNzdWVyIGluIGxvY2FsIHN0b3JhZ2VcbiAqIE9ubHkgc2V0IGFmdGVyIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb25cbiAqIEBwYXJhbSBjbGllbnRJZFxuICogQHBhcmFtIGlzc3VlclxuICogQHBhcmFtIGlkVG9rZW5cbiAqIEBwYXJhbSBpZFRva2VuQ2xhaW1zXG4gKi9cbmV4cG9ydCBjb25zdCBwZXJzaXN0T2lkY0F1dGhlbnRpY2F0ZWRTZXR0aW5ncyA9IChjbGllbnRJZDogc3RyaW5nLCBpc3N1ZXI6IHN0cmluZywgaWRUb2tlbjogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oY2xpZW50SWRTdG9yYWdlS2V5LCBjbGllbnRJZCk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odG9rZW5Jc3N1ZXJTdG9yYWdlS2V5LCBpc3N1ZXIpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGlkVG9rZW5TdG9yYWdlS2V5LCBpZFRva2VuKTtcbn07XG5cbi8qKlxuICogUmV0cmlldmUgc3RvcmVkIG9pZGMgaXNzdWVyIGZyb20gbG9jYWwgc3RvcmFnZVxuICogV2hlbiB1c2VyIGhhcyB0b2tlbiBmcm9tIE9JREMgaXNzdWVyLCB0aGlzIHdpbGwgYmUgc2V0XG4gKiBAcmV0dXJucyBpc3N1ZXIgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdG9yZWRPaWRjVG9rZW5Jc3N1ZXIgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odG9rZW5Jc3N1ZXJTdG9yYWdlS2V5KSA/PyB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBzdG9yZWQgb2lkYyBjbGllbnQgaWQgZnJvbSBsb2NhbCBzdG9yYWdlXG4gKiBAcmV0dXJucyBjbGllbnRJZFxuICogQHRocm93cyB3aGVuIGNsaWVudElkIGlzIG5vdCBmb3VuZCBpbiBsb2NhbCBzdG9yYWdlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdG9yZWRPaWRjQ2xpZW50SWQgPSAoKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBjbGllbnRJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGNsaWVudElkU3RvcmFnZUtleSk7XG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPaWRjIGNsaWVudCBpZCBub3QgZm91bmQgaW4gc3RvcmFnZVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsaWVudElkO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSBzdG9yZWQgaWQgdG9rZW4gY2xhaW1zIGZyb20gc3RvcmVkIGlkIHRva2VuIG9yIGxvY2FsIHN0b3JhZ2VcbiAqIEByZXR1cm5zIGlkVG9rZW5DbGFpbXMgb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdG9yZWRPaWRjSWRUb2tlbkNsYWltcyA9ICgpOiBJZFRva2VuQ2xhaW1zIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBpZFRva2VuID0gZ2V0U3RvcmVkT2lkY0lkVG9rZW4oKTtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgICByZXR1cm4gZGVjb2RlSWRUb2tlbihpZFRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZFRva2VuQ2xhaW1zID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oaWRUb2tlbkNsYWltc1N0b3JhZ2VLZXkpO1xuICAgIGlmICghaWRUb2tlbkNsYWltcykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBKU09OLnBhcnNlKGlkVG9rZW5DbGFpbXMpIGFzIElkVG9rZW5DbGFpbXM7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlIHN0b3JlZCBpZCB0b2tlbiBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAqIEByZXR1cm5zIGlkVG9rZW4gb3IgdW5kZWZpbmVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdG9yZWRPaWRjSWRUb2tlbiA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShpZFRva2VuU3RvcmFnZUtleSkgPz8gdW5kZWZpbmVkO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBU0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBS0EsTUFBTUMsa0JBQWtCLEdBQUcsbUJBQW1CO0FBQzlDLE1BQU1DLHFCQUFxQixHQUFHLHNCQUFzQjtBQUNwRCxNQUFNQyxpQkFBaUIsR0FBRyxrQkFBa0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsZ0NBQWdDLEdBQUdBLENBQUNDLFFBQWdCLEVBQUVDLE1BQWMsRUFBRUMsT0FBZSxLQUFXO0VBQ3pHQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ1Qsa0JBQWtCLEVBQUVLLFFBQVEsQ0FBQztFQUNsREcsWUFBWSxDQUFDQyxPQUFPLENBQUNSLHFCQUFxQixFQUFFSyxNQUFNLENBQUM7RUFDbkRFLFlBQVksQ0FBQ0MsT0FBTyxDQUFDUCxpQkFBaUIsRUFBRUssT0FBTyxDQUFDO0FBQ3BELENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBRyxPQUFBLENBQUFOLGdDQUFBLEdBQUFBLGdDQUFBO0FBS08sTUFBTU8sd0JBQXdCLEdBQUdBLENBQUEsS0FBMEI7RUFDOUQsT0FBT0gsWUFBWSxDQUFDSSxPQUFPLENBQUNYLHFCQUFxQixDQUFDLElBQUlZLFNBQVM7QUFDbkUsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkFILE9BQUEsQ0FBQUMsd0JBQUEsR0FBQUEsd0JBQUE7QUFLTyxNQUFNRyxxQkFBcUIsR0FBR0EsQ0FBQSxLQUFjO0VBQy9DLE1BQU1ULFFBQVEsR0FBR0csWUFBWSxDQUFDSSxPQUFPLENBQUNaLGtCQUFrQixDQUFDO0VBQ3pELElBQUksQ0FBQ0ssUUFBUSxFQUFFO0lBQ1gsTUFBTSxJQUFJVSxLQUFLLENBQUMscUNBQXFDLENBQUM7RUFDMUQ7RUFDQSxPQUFPVixRQUFRO0FBQ25CLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFIQUssT0FBQSxDQUFBSSxxQkFBQSxHQUFBQSxxQkFBQTtBQUlPLE1BQU1FLDBCQUEwQixHQUFHQSxDQUFBLEtBQWlDO0VBQ3ZFLE1BQU1ULE9BQU8sR0FBR1Usb0JBQW9CLENBQUMsQ0FBQztFQUN0QyxJQUFJVixPQUFPLEVBQUU7SUFDVCxPQUFPLElBQUFXLHFCQUFhLEVBQUNYLE9BQU8sQ0FBQztFQUNqQztFQUVBLE1BQU1ZLGFBQWEsR0FBR1gsWUFBWSxDQUFDSSxPQUFPLENBQUNULHVCQUF1QixDQUFDO0VBQ25FLElBQUksQ0FBQ2dCLGFBQWEsRUFBRTtJQUNoQjtFQUNKO0VBQ0EsT0FBT0MsSUFBSSxDQUFDQyxLQUFLLENBQUNGLGFBQWEsQ0FBQztBQUNwQyxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBSEFULE9BQUEsQ0FBQU0sMEJBQUEsR0FBQUEsMEJBQUE7QUFJTyxNQUFNQyxvQkFBb0IsR0FBR0EsQ0FBQSxLQUEwQjtFQUMxRCxPQUFPVCxZQUFZLENBQUNJLE9BQU8sQ0FBQ1YsaUJBQWlCLENBQUMsSUFBSVcsU0FBUztBQUMvRCxDQUFDO0FBQUNILE9BQUEsQ0FBQU8sb0JBQUEsR0FBQUEsb0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=