remove "Manually verify all remote sessions" setting (#12706)
* remove "Manually verify all remote sessions" setting And remove all of the advanced encryption settings section, since that was the only setting in there. * yarn i18n * also remove now-unused OrderedMultiController and PushToMatrixClientController
This commit is contained in:
parent
ba7cf60cd8
commit
db95f26ffa
7 changed files with 1 additions and 208 deletions
|
@ -1,42 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2020 The Matrix.org Foundation C.I.C.
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import React from "react";
|
|
||||||
|
|
||||||
import { _t } from "../../../languageHandler";
|
|
||||||
import { SettingLevel } from "../../../settings/SettingLevel";
|
|
||||||
import SettingsStore from "../../../settings/SettingsStore";
|
|
||||||
import SettingsFlag from "../elements/SettingsFlag";
|
|
||||||
import SettingsSubsection, { SettingsSubsectionText } from "./shared/SettingsSubsection";
|
|
||||||
|
|
||||||
const SETTING_MANUALLY_VERIFY_ALL_SESSIONS = "e2ee.manuallyVerifyAllSessions";
|
|
||||||
|
|
||||||
const E2eAdvancedPanel: React.FC = () => {
|
|
||||||
return (
|
|
||||||
<SettingsSubsection heading={_t("settings|security|encryption_section")}>
|
|
||||||
<SettingsFlag name={SETTING_MANUALLY_VERIFY_ALL_SESSIONS} level={SettingLevel.DEVICE} />
|
|
||||||
<SettingsSubsectionText>
|
|
||||||
{_t("settings|security|encryption_individual_verification_mode")}
|
|
||||||
</SettingsSubsectionText>
|
|
||||||
</SettingsSubsection>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default E2eAdvancedPanel;
|
|
||||||
|
|
||||||
export function isE2eAdvancedPanelPossible(): boolean {
|
|
||||||
return SettingsStore.canSetValue(SETTING_MANUALLY_VERIFY_ALL_SESSIONS, null, SettingLevel.DEVICE);
|
|
||||||
}
|
|
|
@ -28,7 +28,6 @@ import { SettingLevel } from "../../../../../settings/SettingLevel";
|
||||||
import SecureBackupPanel from "../../SecureBackupPanel";
|
import SecureBackupPanel from "../../SecureBackupPanel";
|
||||||
import SettingsStore from "../../../../../settings/SettingsStore";
|
import SettingsStore from "../../../../../settings/SettingsStore";
|
||||||
import { UIFeature } from "../../../../../settings/UIFeature";
|
import { UIFeature } from "../../../../../settings/UIFeature";
|
||||||
import E2eAdvancedPanel, { isE2eAdvancedPanelPossible } from "../../E2eAdvancedPanel";
|
|
||||||
import { ActionPayload } from "../../../../../dispatcher/payloads";
|
import { ActionPayload } from "../../../../../dispatcher/payloads";
|
||||||
import CryptographyPanel from "../../CryptographyPanel";
|
import CryptographyPanel from "../../CryptographyPanel";
|
||||||
import SettingsFlag from "../../../elements/SettingsFlag";
|
import SettingsFlag from "../../../elements/SettingsFlag";
|
||||||
|
@ -361,14 +360,12 @@ export default class SecurityUserSettingsTab extends React.Component<IProps, ISt
|
||||||
if (SettingsStore.getValue(UIFeature.AdvancedSettings)) {
|
if (SettingsStore.getValue(UIFeature.AdvancedSettings)) {
|
||||||
const ignoreUsersPanel = this.renderIgnoredUsers();
|
const ignoreUsersPanel = this.renderIgnoredUsers();
|
||||||
const invitesPanel = this.renderManageInvites();
|
const invitesPanel = this.renderManageInvites();
|
||||||
const e2ePanel = isE2eAdvancedPanelPossible() ? <E2eAdvancedPanel /> : null;
|
|
||||||
// only show the section if there's something to show
|
// only show the section if there's something to show
|
||||||
if (ignoreUsersPanel || invitesPanel || e2ePanel) {
|
if (ignoreUsersPanel || invitesPanel) {
|
||||||
advancedSection = (
|
advancedSection = (
|
||||||
<SettingsSection heading={_t("common|advanced")}>
|
<SettingsSection heading={_t("common|advanced")}>
|
||||||
{ignoreUsersPanel}
|
{ignoreUsersPanel}
|
||||||
{invitesPanel}
|
{invitesPanel}
|
||||||
{e2ePanel}
|
|
||||||
</SettingsSection>
|
</SettingsSection>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2728,7 +2728,6 @@
|
||||||
"dialog_title": "<strong>Settings:</strong> Security & Privacy",
|
"dialog_title": "<strong>Settings:</strong> Security & Privacy",
|
||||||
"e2ee_default_disabled_warning": "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.",
|
"e2ee_default_disabled_warning": "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.",
|
||||||
"enable_message_search": "Enable message search in encrypted rooms",
|
"enable_message_search": "Enable message search in encrypted rooms",
|
||||||
"encryption_individual_verification_mode": "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.",
|
|
||||||
"encryption_section": "Encryption",
|
"encryption_section": "Encryption",
|
||||||
"error_loading_key_backup_status": "Unable to load key backup status",
|
"error_loading_key_backup_status": "Unable to load key backup status",
|
||||||
"export_megolm_keys": "Export E2E room keys",
|
"export_megolm_keys": "Export E2E room keys",
|
||||||
|
@ -2747,7 +2746,6 @@
|
||||||
"key_backup_inactive": "This session is <b>not backing up your keys</b>, but you do have an existing backup you can restore from and add to going forward.",
|
"key_backup_inactive": "This session is <b>not backing up your keys</b>, but you do have an existing backup you can restore from and add to going forward.",
|
||||||
"key_backup_inactive_warning": "Your keys are <b>not being backed up from this session</b>.",
|
"key_backup_inactive_warning": "Your keys are <b>not being backed up from this session</b>.",
|
||||||
"key_backup_latest_version": "Latest backup version on server:",
|
"key_backup_latest_version": "Latest backup version on server:",
|
||||||
"manually_verify_all_sessions": "Manually verify all remote sessions",
|
|
||||||
"message_search_disable_warning": "If disabled, messages from encrypted rooms won't appear in search results.",
|
"message_search_disable_warning": "If disabled, messages from encrypted rooms won't appear in search results.",
|
||||||
"message_search_disabled": "Securely cache encrypted messages locally for them to appear in search results.",
|
"message_search_disabled": "Securely cache encrypted messages locally for them to appear in search results.",
|
||||||
"message_search_enabled": {
|
"message_search_enabled": {
|
||||||
|
|
|
@ -15,7 +15,6 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
|
||||||
import React, { ReactNode } from "react";
|
import React, { ReactNode } from "react";
|
||||||
|
|
||||||
import { _t, _td, TranslationKey } from "../languageHandler";
|
import { _t, _td, TranslationKey } from "../languageHandler";
|
||||||
|
@ -24,7 +23,6 @@ import {
|
||||||
NotificationsEnabledController,
|
NotificationsEnabledController,
|
||||||
} from "./controllers/NotificationControllers";
|
} from "./controllers/NotificationControllers";
|
||||||
import ThemeController from "./controllers/ThemeController";
|
import ThemeController from "./controllers/ThemeController";
|
||||||
import PushToMatrixClientController from "./controllers/PushToMatrixClientController";
|
|
||||||
import ReloadOnChangeController from "./controllers/ReloadOnChangeController";
|
import ReloadOnChangeController from "./controllers/ReloadOnChangeController";
|
||||||
import FontSizeController from "./controllers/FontSizeController";
|
import FontSizeController from "./controllers/FontSizeController";
|
||||||
import SystemFontController from "./controllers/SystemFontController";
|
import SystemFontController from "./controllers/SystemFontController";
|
||||||
|
@ -33,7 +31,6 @@ import SettingController from "./controllers/SettingController";
|
||||||
import { IS_MAC } from "../Keyboard";
|
import { IS_MAC } from "../Keyboard";
|
||||||
import UIFeatureController from "./controllers/UIFeatureController";
|
import UIFeatureController from "./controllers/UIFeatureController";
|
||||||
import { UIFeature } from "./UIFeature";
|
import { UIFeature } from "./UIFeature";
|
||||||
import { OrderedMultiController } from "./controllers/OrderedMultiController";
|
|
||||||
import { Layout } from "./enums/Layout";
|
import { Layout } from "./enums/Layout";
|
||||||
import ReducedMotionController from "./controllers/ReducedMotionController";
|
import ReducedMotionController from "./controllers/ReducedMotionController";
|
||||||
import IncompatibleController from "./controllers/IncompatibleController";
|
import IncompatibleController from "./controllers/IncompatibleController";
|
||||||
|
@ -1008,18 +1005,6 @@ export const SETTINGS: { [setting: string]: ISetting } = {
|
||||||
default: true,
|
default: true,
|
||||||
controller: new UIFeatureController(UIFeature.Voip),
|
controller: new UIFeatureController(UIFeature.Voip),
|
||||||
},
|
},
|
||||||
"e2ee.manuallyVerifyAllSessions": {
|
|
||||||
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
|
|
||||||
displayName: _td("settings|security|manually_verify_all_sessions"),
|
|
||||||
default: false,
|
|
||||||
controller: new OrderedMultiController([
|
|
||||||
// Apply the feature controller first to ensure that the setting doesn't
|
|
||||||
// show up and can't be toggled. PushToMatrixClientController doesn't
|
|
||||||
// do any overrides anyways.
|
|
||||||
new UIFeatureController(UIFeature.AdvancedEncryption),
|
|
||||||
new PushToMatrixClientController(MatrixClient.prototype.setCryptoTrustCrossSignedDevices, true),
|
|
||||||
]),
|
|
||||||
},
|
|
||||||
"ircDisplayNameWidth": {
|
"ircDisplayNameWidth": {
|
||||||
// We specifically want to have room-device > device so that users may set a device default
|
// We specifically want to have room-device > device so that users may set a device default
|
||||||
// with a per-room override.
|
// with a per-room override.
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2020 The Matrix.org Foundation C.I.C.
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import SettingController from "./SettingController";
|
|
||||||
import { SettingLevel } from "../SettingLevel";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows for multiple controllers to affect a setting. The first controller
|
|
||||||
* provided to this class which overrides the setting value will affect
|
|
||||||
* the value - other controllers are not called. Change notification handlers
|
|
||||||
* are proxied through to all controllers.
|
|
||||||
*
|
|
||||||
* Similarly, the first controller which indicates that a setting is disabled
|
|
||||||
* will be used - other controllers will not be considered.
|
|
||||||
*/
|
|
||||||
export class OrderedMultiController extends SettingController {
|
|
||||||
public constructor(public readonly controllers: SettingController[]) {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public getValueOverride(
|
|
||||||
level: SettingLevel,
|
|
||||||
roomId: string,
|
|
||||||
calculatedValue: any,
|
|
||||||
calculatedAtLevel: SettingLevel | null,
|
|
||||||
): any {
|
|
||||||
for (const controller of this.controllers) {
|
|
||||||
const override = controller.getValueOverride(level, roomId, calculatedValue, calculatedAtLevel);
|
|
||||||
if (override !== undefined && override !== null) return override;
|
|
||||||
}
|
|
||||||
return null; // no override
|
|
||||||
}
|
|
||||||
|
|
||||||
public onChange(level: SettingLevel, roomId: string, newValue: any): void {
|
|
||||||
for (const controller of this.controllers) {
|
|
||||||
controller.onChange(level, roomId, newValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public get settingDisabled(): boolean {
|
|
||||||
for (const controller of this.controllers) {
|
|
||||||
if (controller.settingDisabled) return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2020 The Matrix.org Foundation C.I.C.
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { MatrixClientPeg } from "../../MatrixClientPeg";
|
|
||||||
import { SettingLevel } from "../SettingLevel";
|
|
||||||
import SettingController from "./SettingController";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* When the value changes, call a setter function on the matrix client with the new value
|
|
||||||
*/
|
|
||||||
export default class PushToMatrixClientController extends SettingController {
|
|
||||||
public constructor(
|
|
||||||
private setter: Function,
|
|
||||||
private inverse: boolean,
|
|
||||||
) {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public onChange(level: SettingLevel, roomId: string, newValue: any): void {
|
|
||||||
// XXX does this work? This surely isn't necessarily the effective value,
|
|
||||||
// but it's what NotificationsEnabledController does...
|
|
||||||
this.setter.call(MatrixClientPeg.get(), this.inverse ? !newValue : newValue);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -404,55 +404,6 @@ exports[`<SecurityUserSettingsTab /> renders security section 1`] = `
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
class="mx_SettingsSubsection"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="mx_SettingsSubsectionHeading"
|
|
||||||
>
|
|
||||||
<h3
|
|
||||||
class="mx_Heading_h4 mx_SettingsSubsectionHeading_heading"
|
|
||||||
>
|
|
||||||
Encryption
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="mx_SettingsSubsection_content"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="mx_SettingsFlag"
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
class="mx_SettingsFlag_label"
|
|
||||||
for="mx_SettingsFlag_QgU2PomxwKpa"
|
|
||||||
>
|
|
||||||
<span
|
|
||||||
class="mx_SettingsFlag_labelText"
|
|
||||||
>
|
|
||||||
Manually verify all remote sessions
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<div
|
|
||||||
aria-checked="false"
|
|
||||||
aria-disabled="false"
|
|
||||||
aria-label="Manually verify all remote sessions"
|
|
||||||
class="mx_AccessibleButton mx_ToggleSwitch mx_ToggleSwitch_enabled"
|
|
||||||
id="mx_SettingsFlag_QgU2PomxwKpa"
|
|
||||||
role="switch"
|
|
||||||
tabindex="0"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="mx_ToggleSwitch_ball"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
class="mx_SettingsSubsection_text"
|
|
||||||
>
|
|
||||||
Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue