Setup flow for cross-signing on login / registration
Still outstanding: * Keep password from login / registration * Confirmation on skip button Fixes https://github.com/vector-im/riot-web/issues/11902
This commit is contained in:
parent
9722b34c35
commit
3d7137d4ad
9 changed files with 159 additions and 25 deletions
|
@ -89,12 +89,15 @@ export const VIEWS = {
|
|||
// showing flow to trust this new device with cross-signing
|
||||
COMPLETE_SECURITY: 6,
|
||||
|
||||
// flow to setup SSSS / cross-signing on this account
|
||||
E2E_SETUP: 7,
|
||||
|
||||
// we are logged in with an active matrix client.
|
||||
LOGGED_IN: 7,
|
||||
LOGGED_IN: 8,
|
||||
|
||||
// We are logged out (invalid token) but have our local state again. The user
|
||||
// should log back in to rehydrate the client.
|
||||
SOFT_LOGOUT: 8,
|
||||
SOFT_LOGOUT: 9,
|
||||
};
|
||||
|
||||
// Actions that are redirected through the onboarding process prior to being
|
||||
|
@ -657,7 +660,9 @@ export default createReactClass({
|
|||
if (
|
||||
!Lifecycle.isSoftLogout() &&
|
||||
this.state.view !== VIEWS.LOGIN &&
|
||||
this.state.view !== VIEWS.COMPLETE_SECURITY
|
||||
this.state.view !== VIEWS.REGISTER &&
|
||||
this.state.view !== VIEWS.COMPLETE_SECURITY &&
|
||||
this.state.view !== VIEWS.E2E_SETUP
|
||||
) {
|
||||
this._onLoggedIn();
|
||||
}
|
||||
|
@ -1724,6 +1729,11 @@ export default createReactClass({
|
|||
this.showScreen("forgot_password");
|
||||
},
|
||||
|
||||
onRegisterFlowComplete: function(credentials) {
|
||||
this.onUserCompletedLoginFlow();
|
||||
return this.onRegistered(credentials);
|
||||
},
|
||||
|
||||
// returns a promise which resolves to the new MatrixClient
|
||||
onRegistered: function(credentials) {
|
||||
return Lifecycle.setLoggedIn(credentials);
|
||||
|
@ -1847,12 +1857,18 @@ export default createReactClass({
|
|||
|
||||
if (masterKeyInStorage) {
|
||||
this.setStateForNewView({ view: VIEWS.COMPLETE_SECURITY });
|
||||
} else if (SettingsStore.isFeatureEnabled("feature_cross_signing")) {
|
||||
// This will only work if the feature is set to 'enable' in the config,
|
||||
// since it's too early in the lifecycle for users to have turned the
|
||||
// labs flag on.
|
||||
this.setStateForNewView({ view: VIEWS.E2E_SETUP });
|
||||
} else {
|
||||
this._onLoggedIn();
|
||||
}
|
||||
},
|
||||
|
||||
onCompleteSecurityFinished() {
|
||||
// complete security / e2e setup has finished
|
||||
onCompleteSecurityE2eSetupFinished() {
|
||||
this._onLoggedIn();
|
||||
},
|
||||
|
||||
|
@ -1872,7 +1888,14 @@ export default createReactClass({
|
|||
const CompleteSecurity = sdk.getComponent('structures.auth.CompleteSecurity');
|
||||
view = (
|
||||
<CompleteSecurity
|
||||
onFinished={this.onCompleteSecurityFinished}
|
||||
onFinished={this.onCompleteSecurityE2eSetupFinished}
|
||||
/>
|
||||
);
|
||||
} else if (this.state.view === VIEWS.E2E_SETUP) {
|
||||
const E2eSetup = sdk.getComponent('structures.auth.E2eSetup');
|
||||
view = (
|
||||
<E2eSetup
|
||||
onFinished={this.onCompleteSecurityE2eSetupFinished}
|
||||
/>
|
||||
);
|
||||
} else if (this.state.view === VIEWS.POST_REGISTRATION) {
|
||||
|
@ -1939,7 +1962,7 @@ export default createReactClass({
|
|||
email={this.props.startingFragmentQueryParams.email}
|
||||
brand={this.props.config.brand}
|
||||
makeRegistrationUrl={this._makeRegistrationUrl}
|
||||
onLoggedIn={this.onRegistered}
|
||||
onLoggedIn={this.onRegisterFlowComplete}
|
||||
onLoginClick={this.onLoginClick}
|
||||
onServerConfigChange={this.onServerConfigChange}
|
||||
{...this.getServerProperties()}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue