matrix-react-sdk
Version:
SDK for matrix.org using React
75 lines (72 loc) • 10.9 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WidgetPermissionStore = exports.OIDCState = void 0;
var _matrixWidgetApi = require("matrix-widget-api");
var _SettingsStore = _interopRequireDefault(require("../../settings/SettingsStore"));
var _SettingLevel = require("../../settings/SettingLevel");
/*
* Copyright 2024 New Vector Ltd.
* Copyright 2020 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.
*/
let OIDCState = exports.OIDCState = /*#__PURE__*/function (OIDCState) {
OIDCState[OIDCState["Allowed"] = 0] = "Allowed";
OIDCState[OIDCState["Denied"] = 1] = "Denied";
OIDCState[OIDCState["Unknown"] = 2] = "Unknown";
return OIDCState;
}({}); // user has not set a remembered value
class WidgetPermissionStore {
constructor(context) {
this.context = context;
}
// TODO (all functions here): Merge widgetKind with the widget definition
packSettingKey(widget, kind, roomId) {
let location = roomId;
if (kind !== _matrixWidgetApi.WidgetKind.Room) {
location = this.context.client?.getUserId();
}
if (kind === _matrixWidgetApi.WidgetKind.Modal) {
location = "*MODAL*-" + location; // to guarantee differentiation from whatever spawned it
}
if (!location) {
throw new Error("Failed to determine a location to check the widget's OIDC state with");
}
return encodeURIComponent(`${location}::${widget.templateUrl}`);
}
getOIDCState(widget, kind, roomId) {
const settingsKey = this.packSettingKey(widget, kind, roomId);
const settings = _SettingsStore.default.getValue("widgetOpenIDPermissions");
if (settings?.deny?.includes(settingsKey)) {
return OIDCState.Denied;
}
if (settings?.allow?.includes(settingsKey)) {
return OIDCState.Allowed;
}
return OIDCState.Unknown;
}
setOIDCState(widget, kind, roomId, newState) {
const settingsKey = this.packSettingKey(widget, kind, roomId);
let currentValues = _SettingsStore.default.getValue("widgetOpenIDPermissions");
if (!currentValues) {
currentValues = {};
}
if (!currentValues.allow) currentValues.allow = [];
if (!currentValues.deny) currentValues.deny = [];
if (newState === OIDCState.Allowed) {
currentValues.allow.push(settingsKey);
} else if (newState === OIDCState.Denied) {
currentValues.deny.push(settingsKey);
} else {
currentValues.allow = currentValues.allow.filter(c => c !== settingsKey);
currentValues.deny = currentValues.deny.filter(c => c !== settingsKey);
}
_SettingsStore.default.setValue("widgetOpenIDPermissions", null, _SettingLevel.SettingLevel.DEVICE, currentValues);
}
}
exports.WidgetPermissionStore = WidgetPermissionStore;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4V2lkZ2V0QXBpIiwicmVxdWlyZSIsIl9TZXR0aW5nc1N0b3JlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9TZXR0aW5nTGV2ZWwiLCJPSURDU3RhdGUiLCJleHBvcnRzIiwiV2lkZ2V0UGVybWlzc2lvblN0b3JlIiwiY29uc3RydWN0b3IiLCJjb250ZXh0IiwicGFja1NldHRpbmdLZXkiLCJ3aWRnZXQiLCJraW5kIiwicm9vbUlkIiwibG9jYXRpb24iLCJXaWRnZXRLaW5kIiwiUm9vbSIsImNsaWVudCIsImdldFVzZXJJZCIsIk1vZGFsIiwiRXJyb3IiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0ZW1wbGF0ZVVybCIsImdldE9JRENTdGF0ZSIsInNldHRpbmdzS2V5Iiwic2V0dGluZ3MiLCJTZXR0aW5nc1N0b3JlIiwiZ2V0VmFsdWUiLCJkZW55IiwiaW5jbHVkZXMiLCJEZW5pZWQiLCJhbGxvdyIsIkFsbG93ZWQiLCJVbmtub3duIiwic2V0T0lEQ1N0YXRlIiwibmV3U3RhdGUiLCJjdXJyZW50VmFsdWVzIiwicHVzaCIsImZpbHRlciIsImMiLCJzZXRWYWx1ZSIsIlNldHRpbmdMZXZlbCIsIkRFVklDRSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZXMvd2lkZ2V0cy9XaWRnZXRQZXJtaXNzaW9uU3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuICogQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcbiAqIFBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4gKi9cblxuaW1wb3J0IHsgV2lkZ2V0LCBXaWRnZXRLaW5kIH0gZnJvbSBcIm1hdHJpeC13aWRnZXQtYXBpXCI7XG5cbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vLi4vc2V0dGluZ3MvU2V0dGluZ0xldmVsXCI7XG5pbXBvcnQgeyBTZGtDb250ZXh0Q2xhc3MgfSBmcm9tIFwiLi4vLi4vY29udGV4dHMvU0RLQ29udGV4dFwiO1xuXG5leHBvcnQgZW51bSBPSURDU3RhdGUge1xuICAgIEFsbG93ZWQsIC8vIHVzZXIgaGFzIHNldCB0aGUgcmVtZW1iZXJlZCB2YWx1ZSBhcyBhbGxvd2VkXG4gICAgRGVuaWVkLCAvLyB1c2VyIGhhcyBzZXQgdGhlIHJlbWVtYmVyZWQgdmFsdWUgYXMgZGlzYWxsb3dlZFxuICAgIFVua25vd24sIC8vIHVzZXIgaGFzIG5vdCBzZXQgYSByZW1lbWJlcmVkIHZhbHVlXG59XG5cbmV4cG9ydCBjbGFzcyBXaWRnZXRQZXJtaXNzaW9uU3RvcmUge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IFNka0NvbnRleHRDbGFzcykge31cblxuICAgIC8vIFRPRE8gKGFsbCBmdW5jdGlvbnMgaGVyZSk6IE1lcmdlIHdpZGdldEtpbmQgd2l0aCB0aGUgd2lkZ2V0IGRlZmluaXRpb25cblxuICAgIHByaXZhdGUgcGFja1NldHRpbmdLZXkod2lkZ2V0OiBXaWRnZXQsIGtpbmQ6IFdpZGdldEtpbmQsIHJvb21JZD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBsb2NhdGlvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHJvb21JZDtcbiAgICAgICAgaWYgKGtpbmQgIT09IFdpZGdldEtpbmQuUm9vbSkge1xuICAgICAgICAgICAgbG9jYXRpb24gPSB0aGlzLmNvbnRleHQuY2xpZW50Py5nZXRVc2VySWQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2luZCA9PT0gV2lkZ2V0S2luZC5Nb2RhbCkge1xuICAgICAgICAgICAgbG9jYXRpb24gPSBcIipNT0RBTCotXCIgKyBsb2NhdGlvbjsgLy8gdG8gZ3VhcmFudGVlIGRpZmZlcmVudGlhdGlvbiBmcm9tIHdoYXRldmVyIHNwYXduZWQgaXRcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZGV0ZXJtaW5lIGEgbG9jYXRpb24gdG8gY2hlY2sgdGhlIHdpZGdldCdzIE9JREMgc3RhdGUgd2l0aFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoYCR7bG9jYXRpb259Ojoke3dpZGdldC50ZW1wbGF0ZVVybH1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T0lEQ1N0YXRlKHdpZGdldDogV2lkZ2V0LCBraW5kOiBXaWRnZXRLaW5kLCByb29tSWQ/OiBzdHJpbmcpOiBPSURDU3RhdGUge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0tleSA9IHRoaXMucGFja1NldHRpbmdLZXkod2lkZ2V0LCBraW5kLCByb29tSWQpO1xuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IFNldHRpbmdzU3RvcmUuZ2V0VmFsdWUoXCJ3aWRnZXRPcGVuSURQZXJtaXNzaW9uc1wiKTtcbiAgICAgICAgaWYgKHNldHRpbmdzPy5kZW55Py5pbmNsdWRlcyhzZXR0aW5nc0tleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBPSURDU3RhdGUuRGVuaWVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR0aW5ncz8uYWxsb3c/LmluY2x1ZGVzKHNldHRpbmdzS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIE9JRENTdGF0ZS5BbGxvd2VkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSURDU3RhdGUuVW5rbm93bjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0T0lEQ1N0YXRlKHdpZGdldDogV2lkZ2V0LCBraW5kOiBXaWRnZXRLaW5kLCByb29tSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgbmV3U3RhdGU6IE9JRENTdGF0ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZXR0aW5nc0tleSA9IHRoaXMucGFja1NldHRpbmdLZXkod2lkZ2V0LCBraW5kLCByb29tSWQpO1xuXG4gICAgICAgIGxldCBjdXJyZW50VmFsdWVzID0gU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZTx7XG4gICAgICAgICAgICBhbGxvdz86IHN0cmluZ1tdO1xuICAgICAgICAgICAgZGVueT86IHN0cmluZ1tdO1xuICAgICAgICB9PihcIndpZGdldE9wZW5JRFBlcm1pc3Npb25zXCIpO1xuICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZXMpIHtcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZXMuYWxsb3cpIGN1cnJlbnRWYWx1ZXMuYWxsb3cgPSBbXTtcbiAgICAgICAgaWYgKCFjdXJyZW50VmFsdWVzLmRlbnkpIGN1cnJlbnRWYWx1ZXMuZGVueSA9IFtdO1xuXG4gICAgICAgIGlmIChuZXdTdGF0ZSA9PT0gT0lEQ1N0YXRlLkFsbG93ZWQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMuYWxsb3cucHVzaChzZXR0aW5nc0tleSk7XG4gICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUgPT09IE9JRENTdGF0ZS5EZW5pZWQpIHtcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMuZGVueS5wdXNoKHNldHRpbmdzS2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMuYWxsb3cgPSBjdXJyZW50VmFsdWVzLmFsbG93LmZpbHRlcigoYykgPT4gYyAhPT0gc2V0dGluZ3NLZXkpO1xuICAgICAgICAgICAgY3VycmVudFZhbHVlcy5kZW55ID0gY3VycmVudFZhbHVlcy5kZW55LmZpbHRlcigoYykgPT4gYyAhPT0gc2V0dGluZ3NLZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgU2V0dGluZ3NTdG9yZS5zZXRWYWx1ZShcIndpZGdldE9wZW5JRFBlcm1pc3Npb25zXCIsIG51bGwsIFNldHRpbmdMZXZlbC5ERVZJQ0UsIGN1cnJlbnRWYWx1ZXMpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLGdCQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BLElBY1lJLFNBQVMsR0FBQUMsT0FBQSxDQUFBRCxTQUFBLDBCQUFUQSxTQUFTO0VBQVRBLFNBQVMsQ0FBVEEsU0FBUztFQUFUQSxTQUFTLENBQVRBLFNBQVM7RUFBVEEsU0FBUyxDQUFUQSxTQUFTO0VBQUEsT0FBVEEsU0FBUztBQUFBLE9BR1I7QUFHTixNQUFNRSxxQkFBcUIsQ0FBQztFQUN4QkMsV0FBV0EsQ0FBa0JDLE9BQXdCLEVBQUU7SUFBQSxLQUExQkEsT0FBd0IsR0FBeEJBLE9BQXdCO0VBQUc7O0VBRS9EOztFQUVRQyxjQUFjQSxDQUFDQyxNQUFjLEVBQUVDLElBQWdCLEVBQUVDLE1BQWUsRUFBVTtJQUM5RSxJQUFJQyxRQUFtQyxHQUFHRCxNQUFNO0lBQ2hELElBQUlELElBQUksS0FBS0csMkJBQVUsQ0FBQ0MsSUFBSSxFQUFFO01BQzFCRixRQUFRLEdBQUcsSUFBSSxDQUFDTCxPQUFPLENBQUNRLE1BQU0sRUFBRUMsU0FBUyxDQUFDLENBQUM7SUFDL0M7SUFDQSxJQUFJTixJQUFJLEtBQUtHLDJCQUFVLENBQUNJLEtBQUssRUFBRTtNQUMzQkwsUUFBUSxHQUFHLFVBQVUsR0FBR0EsUUFBUSxDQUFDLENBQUM7SUFDdEM7SUFDQSxJQUFJLENBQUNBLFFBQVEsRUFBRTtNQUNYLE1BQU0sSUFBSU0sS0FBSyxDQUFDLHNFQUFzRSxDQUFDO0lBQzNGO0lBRUEsT0FBT0Msa0JBQWtCLENBQUMsR0FBR1AsUUFBUSxLQUFLSCxNQUFNLENBQUNXLFdBQVcsRUFBRSxDQUFDO0VBQ25FO0VBRU9DLFlBQVlBLENBQUNaLE1BQWMsRUFBRUMsSUFBZ0IsRUFBRUMsTUFBZSxFQUFhO0lBQzlFLE1BQU1XLFdBQVcsR0FBRyxJQUFJLENBQUNkLGNBQWMsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sQ0FBQztJQUM3RCxNQUFNWSxRQUFRLEdBQUdDLHNCQUFhLENBQUNDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQztJQUNsRSxJQUFJRixRQUFRLEVBQUVHLElBQUksRUFBRUMsUUFBUSxDQUFDTCxXQUFXLENBQUMsRUFBRTtNQUN2QyxPQUFPbkIsU0FBUyxDQUFDeUIsTUFBTTtJQUMzQjtJQUNBLElBQUlMLFFBQVEsRUFBRU0sS0FBSyxFQUFFRixRQUFRLENBQUNMLFdBQVcsQ0FBQyxFQUFFO01BQ3hDLE9BQU9uQixTQUFTLENBQUMyQixPQUFPO0lBQzVCO0lBQ0EsT0FBTzNCLFNBQVMsQ0FBQzRCLE9BQU87RUFDNUI7RUFFT0MsWUFBWUEsQ0FBQ3ZCLE1BQWMsRUFBRUMsSUFBZ0IsRUFBRUMsTUFBMEIsRUFBRXNCLFFBQW1CLEVBQVE7SUFDekcsTUFBTVgsV0FBVyxHQUFHLElBQUksQ0FBQ2QsY0FBYyxDQUFDQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxDQUFDO0lBRTdELElBQUl1QixhQUFhLEdBQUdWLHNCQUFhLENBQUNDLFFBQVEsQ0FHdkMseUJBQXlCLENBQUM7SUFDN0IsSUFBSSxDQUFDUyxhQUFhLEVBQUU7TUFDaEJBLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDdEI7SUFDQSxJQUFJLENBQUNBLGFBQWEsQ0FBQ0wsS0FBSyxFQUFFSyxhQUFhLENBQUNMLEtBQUssR0FBRyxFQUFFO0lBQ2xELElBQUksQ0FBQ0ssYUFBYSxDQUFDUixJQUFJLEVBQUVRLGFBQWEsQ0FBQ1IsSUFBSSxHQUFHLEVBQUU7SUFFaEQsSUFBSU8sUUFBUSxLQUFLOUIsU0FBUyxDQUFDMkIsT0FBTyxFQUFFO01BQ2hDSSxhQUFhLENBQUNMLEtBQUssQ0FBQ00sSUFBSSxDQUFDYixXQUFXLENBQUM7SUFDekMsQ0FBQyxNQUFNLElBQUlXLFFBQVEsS0FBSzlCLFNBQVMsQ0FBQ3lCLE1BQU0sRUFBRTtNQUN0Q00sYUFBYSxDQUFDUixJQUFJLENBQUNTLElBQUksQ0FBQ2IsV0FBVyxDQUFDO0lBQ3hDLENBQUMsTUFBTTtNQUNIWSxhQUFhLENBQUNMLEtBQUssR0FBR0ssYUFBYSxDQUFDTCxLQUFLLENBQUNPLE1BQU0sQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLEtBQUtmLFdBQVcsQ0FBQztNQUMxRVksYUFBYSxDQUFDUixJQUFJLEdBQUdRLGFBQWEsQ0FBQ1IsSUFBSSxDQUFDVSxNQUFNLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxLQUFLZixXQUFXLENBQUM7SUFDNUU7SUFFQUUsc0JBQWEsQ0FBQ2MsUUFBUSxDQUFDLHlCQUF5QixFQUFFLElBQUksRUFBRUMsMEJBQVksQ0FBQ0MsTUFBTSxFQUFFTixhQUFhLENBQUM7RUFDL0Y7QUFDSjtBQUFDOUIsT0FBQSxDQUFBQyxxQkFBQSxHQUFBQSxxQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==