Merge pull request #3318 from matrix-org/dbkr/allow_register_email_no_is

Allow registering with email if no ID Server
This commit is contained in:
David Baker 2019-08-19 11:18:30 +01:00 committed by GitHub
commit 2a626c3f7c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 8 deletions

View file

@ -98,6 +98,9 @@ module.exports = React.createClass({
// component without it.
matrixClient: null,
// whether the HS requires an ID server to register with a threepid
serverRequiresIdServer: null,
// The user ID we've just registered
registeredUsername: null,
@ -204,13 +207,23 @@ module.exports = React.createClass({
}
const {hsUrl, isUrl} = serverConfig;
this.setState({
matrixClient: Matrix.createClient({
const cli = Matrix.createClient({
baseUrl: hsUrl,
idBaseUrl: isUrl,
}),
});
this.setState({busy: false});
let serverRequiresIdServer = true;
try {
serverRequiresIdServer = await cli.doesServerRequireIdServerParam();
} catch (e) {
console.log("Unable to determine is server needs id_server param", e);
}
this.setState({
matrixClient: cli,
serverRequiresIdServer,
busy: false,
});
try {
await this._makeRegisterRequest({});
// This should never succeed since we specified an empty
@ -550,6 +563,7 @@ module.exports = React.createClass({
flows={this.state.flows}
serverConfig={this.props.serverConfig}
canSubmit={!this.state.serverErrorIsFatal}
serverRequiresIdServer={this.state.serverRequiresIdServer}
/>;
}
},

View file

@ -55,6 +55,7 @@ module.exports = React.createClass({
flows: PropTypes.arrayOf(PropTypes.object).isRequired,
serverConfig: PropTypes.instanceOf(ValidatedServerConfig).isRequired,
canSubmit: PropTypes.bool,
serverRequiresIdServer: PropTypes.bool,
},
getDefaultProps: function() {
@ -437,7 +438,7 @@ module.exports = React.createClass({
_showEmail() {
const haveIs = Boolean(this.props.serverConfig.isUrl);
if (!haveIs || !this._authStepIsUsed('m.login.email.identity')) {
if ((this.props.serverRequiresIdServer && !haveIs) || !this._authStepIsUsed('m.login.email.identity')) {
return false;
}
return true;

View file

@ -69,7 +69,7 @@ describe('Registration', function() {
const root = render();
// Set non-empty flow & matrixClient to get past the loading spinner
// Set non-empty flows & matrixClient to get past the loading spinner
root.setState({
flows: [],
matrixClient: {},