mirror of https://github.com/vector-im/riot-web
				
				
				
			UI Feature Flag: Registration, Password Reset, Deactivate
							parent
							
								
									2ad08c8394
								
							
						
					
					
						commit
						d340dd58d1
					
				|  | @ -18,6 +18,12 @@ limitations under the License. | |||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     align-items: center; | ||||
| 
 | ||||
|     &.mx_WelcomePage_registrationDisabled { | ||||
|         .mx_ButtonCreateAccount { | ||||
|             display: none; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| .mx_Welcome .mx_AuthBody_language { | ||||
|  |  | |||
|  | @ -79,6 +79,7 @@ import { SettingLevel } from "../../settings/SettingLevel"; | |||
| import { leaveRoomBehaviour } from "../../utils/membership"; | ||||
| import CreateCommunityPrototypeDialog from "../views/dialogs/CreateCommunityPrototypeDialog"; | ||||
| import ThreepidInviteStore, { IThreepidInvite, IThreepidInviteWireFormat } from "../../stores/ThreepidInviteStore"; | ||||
| import {UIFeature} from "../../settings/UIFeature"; | ||||
| 
 | ||||
| /** constants for MatrixChat.state.view */ | ||||
| export enum Views { | ||||
|  | @ -1942,7 +1943,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> { | |||
| 
 | ||||
|     render() { | ||||
|         const fragmentAfterLogin = this.getFragmentAfterLogin(); | ||||
|         let view; | ||||
|         let view = null; | ||||
| 
 | ||||
|         if (this.state.view === Views.LOADING) { | ||||
|             const Spinner = sdk.getComponent('elements.Spinner'); | ||||
|  | @ -2021,7 +2022,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> { | |||
|         } else if (this.state.view === Views.WELCOME) { | ||||
|             const Welcome = sdk.getComponent('auth.Welcome'); | ||||
|             view = <Welcome />; | ||||
|         } else if (this.state.view === Views.REGISTER) { | ||||
|         } else if (this.state.view === Views.REGISTER && SettingsStore.getValue(UIFeature.Registration)) { | ||||
|             const Registration = sdk.getComponent('structures.auth.Registration'); | ||||
|             const email = ThreepidInviteStore.instance.pickBestInvite()?.toEmail; | ||||
|             view = ( | ||||
|  | @ -2039,7 +2040,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> { | |||
|                     {...this.getServerProperties()} | ||||
|                 /> | ||||
|             ); | ||||
|         } else if (this.state.view === Views.FORGOT_PASSWORD) { | ||||
|         } else if (this.state.view === Views.FORGOT_PASSWORD && SettingsStore.getValue(UIFeature.PasswordReset)) { | ||||
|             const ForgotPassword = sdk.getComponent('structures.auth.ForgotPassword'); | ||||
|             view = ( | ||||
|                 <ForgotPassword | ||||
|  | @ -2050,6 +2051,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> { | |||
|                 /> | ||||
|             ); | ||||
|         } else if (this.state.view === Views.LOGIN) { | ||||
|             const showPasswordReset = SettingsStore.getValue(UIFeature.PasswordReset); | ||||
|             const Login = sdk.getComponent('structures.auth.Login'); | ||||
|             view = ( | ||||
|                 <Login | ||||
|  | @ -2058,7 +2060,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> { | |||
|                     onRegisterClick={this.onRegisterClick} | ||||
|                     fallbackHsUrl={this.getFallbackHsUrl()} | ||||
|                     defaultDeviceDisplayName={this.props.defaultDeviceDisplayName} | ||||
|                     onForgotPasswordClick={this.onForgotPasswordClick} | ||||
|                     onForgotPasswordClick={showPasswordReset ? this.onForgotPasswordClick : undefined} | ||||
|                     onServerConfigChange={this.onServerConfigChange} | ||||
|                     fragmentAfterLogin={fragmentAfterLogin} | ||||
|                     {...this.getServerProperties()} | ||||
|  |  | |||
|  | @ -28,6 +28,8 @@ import classNames from "classnames"; | |||
| import AuthPage from "../../views/auth/AuthPage"; | ||||
| import SSOButton from "../../views/elements/SSOButton"; | ||||
| import PlatformPeg from '../../../PlatformPeg'; | ||||
| import SettingsStore from "../../../settings/SettingsStore"; | ||||
| import {UIFeature} from "../../../settings/UIFeature"; | ||||
| 
 | ||||
| // For validating phone numbers without country codes
 | ||||
| const PHONE_NUMBER_REGEX = /^[0-9()\-\s]*$/; | ||||
|  | @ -679,7 +681,7 @@ export default class LoginComponent extends React.Component { | |||
|                     {_t("If you've joined lots of rooms, this might take a while")} | ||||
|                 </div> } | ||||
|             </div>; | ||||
|         } else { | ||||
|         } else if (SettingsStore.getValue(UIFeature.Registration)) { | ||||
|             footer = ( | ||||
|                 <a className="mx_AuthBody_changeFlow" onClick={this.onTryRegisterClick} href="#"> | ||||
|                     { _t('Create account') } | ||||
|  |  | |||
|  | @ -15,10 +15,14 @@ limitations under the License. | |||
| */ | ||||
| 
 | ||||
| import React from 'react'; | ||||
| import classNames from "classnames"; | ||||
| 
 | ||||
| import * as sdk from '../../../index'; | ||||
| import SdkConfig from '../../../SdkConfig'; | ||||
| import AuthPage from "./AuthPage"; | ||||
| import {_td} from "../../../languageHandler"; | ||||
| import SettingsStore from "../../../settings/SettingsStore"; | ||||
| import {UIFeature} from "../../../settings/UIFeature"; | ||||
| 
 | ||||
| // translatable strings for Welcome pages
 | ||||
| _td("Sign in with SSO"); | ||||
|  | @ -39,7 +43,9 @@ export default class Welcome extends React.PureComponent { | |||
| 
 | ||||
|         return ( | ||||
|             <AuthPage> | ||||
|                 <div className="mx_Welcome"> | ||||
|                 <div className={classNames("mx_Welcome", { | ||||
|                     mx_WelcomePage_registrationDisabled: !SettingsStore.getValue(UIFeature.Registration), | ||||
|                 })}> | ||||
|                     <EmbeddedPage | ||||
|                         className="mx_WelcomePage" | ||||
|                         url={pageUrl} | ||||
|  |  | |||
|  | @ -386,6 +386,14 @@ export default class GeneralUserSettingsTab extends React.Component { | |||
|                 width="18" height="18" alt={_t("Warning")} /> | ||||
|             : null; | ||||
| 
 | ||||
|         let accountManagementSection; | ||||
|         if (SettingsStore.getValue(UIFeature.Deactivate)) { | ||||
|             accountManagementSection = <> | ||||
|                 <div className="mx_SettingsTab_heading">{_t("Deactivate account")}</div> | ||||
|                 {this._renderManagementSection()} | ||||
|             </>; | ||||
|         } | ||||
| 
 | ||||
|         return ( | ||||
|             <div className="mx_SettingsTab"> | ||||
|                 <div className="mx_SettingsTab_heading">{_t("General")}</div> | ||||
|  | @ -395,8 +403,7 @@ export default class GeneralUserSettingsTab extends React.Component { | |||
|                 <div className="mx_SettingsTab_heading">{discoWarning} {_t("Discovery")}</div> | ||||
|                 {this._renderDiscoverySection()} | ||||
|                 {this._renderIntegrationManagerSection() /* Has its own title */} | ||||
|                 <div className="mx_SettingsTab_heading">{_t("Deactivate account")}</div> | ||||
|                 {this._renderManagementSection()} | ||||
|                 { accountManagementSection } | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
|  |  | |||
|  | @ -626,4 +626,16 @@ export const SETTINGS: {[setting: string]: ISetting} = { | |||
|         supportedLevels: LEVELS_UI_FEATURE, | ||||
|         default: true, | ||||
|     }, | ||||
|     [UIFeature.Registration]: { | ||||
|         supportedLevels: LEVELS_UI_FEATURE, | ||||
|         default: true, | ||||
|     }, | ||||
|     [UIFeature.PasswordReset]: { | ||||
|         supportedLevels: LEVELS_UI_FEATURE, | ||||
|         default: true, | ||||
|     }, | ||||
|     [UIFeature.Deactivate]: { | ||||
|         supportedLevels: LEVELS_UI_FEATURE, | ||||
|         default: true, | ||||
|     }, | ||||
| }; | ||||
|  |  | |||
|  | @ -19,4 +19,7 @@ export enum UIFeature { | |||
|     URLPreviews = "UIFeature.urlPreviews", | ||||
|     Widgets = "UIFeature.widgets", | ||||
|     Feedback = "UIFeature.feedback", | ||||
|     Registration = "UIFeature.registration", | ||||
|     PasswordReset = "UIFeature.passwordReset", | ||||
|     Deactivate = "UIFeature.deactivate", | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Michael Telatynski
						Michael Telatynski