mirror of
https://github.com/element-hq/element-web
synced 2024-11-27 19:56:47 +03:00
Merge pull request #407 from matrix-org/rav/refactor_guest_registration
Move guest registration into the login logic
This commit is contained in:
commit
4f76398b29
3 changed files with 47 additions and 33 deletions
|
@ -333,6 +333,26 @@ class Login extends Signup {
|
||||||
return flowStep ? flowStep.type : null;
|
return flowStep ? flowStep.type : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loginAsGuest() {
|
||||||
|
MatrixClientPeg.replaceUsingUrls(this._hsUrl, this._isUrl);
|
||||||
|
return MatrixClientPeg.get().registerGuest().then((creds) => {
|
||||||
|
return {
|
||||||
|
userId: creds.user_id,
|
||||||
|
accessToken: creds.access_token,
|
||||||
|
homeserverUrl: this._hsUrl,
|
||||||
|
identityServerUrl: this._isUrl,
|
||||||
|
guest: true
|
||||||
|
};
|
||||||
|
}, (error) => {
|
||||||
|
if (error.httpStatus === 403) {
|
||||||
|
error.friendlyText = "Guest access is disabled on this Home Server.";
|
||||||
|
} else {
|
||||||
|
error.friendlyText = "Failed to register as guest: " + error.data;
|
||||||
|
}
|
||||||
|
throw error;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
loginViaPassword(username, pass) {
|
loginViaPassword(username, pass) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var isEmail = username.indexOf("@") > 0;
|
var isEmail = username.indexOf("@") > 0;
|
||||||
|
|
|
@ -207,34 +207,6 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_registerAsGuest: function(showWarning) {
|
|
||||||
var self = this;
|
|
||||||
console.log("Doing guest login on %s", this.getCurrentHsUrl());
|
|
||||||
var hsUrl = this.getCurrentHsUrl();
|
|
||||||
var isUrl = this.getCurrentIsUrl();
|
|
||||||
|
|
||||||
MatrixClientPeg.replaceUsingUrls(hsUrl, isUrl);
|
|
||||||
MatrixClientPeg.get().registerGuest().done(function(creds) {
|
|
||||||
console.log("Registered as guest: %s", creds.user_id);
|
|
||||||
Lifecycle.setLoggedIn({
|
|
||||||
userId: creds.user_id,
|
|
||||||
accessToken: creds.access_token,
|
|
||||||
homeserverUrl: hsUrl,
|
|
||||||
identityServerUrl: isUrl,
|
|
||||||
guest: true
|
|
||||||
});
|
|
||||||
}, function(err) {
|
|
||||||
if (showWarning) {
|
|
||||||
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
|
|
||||||
Modal.createDialog(ErrorDialog, {
|
|
||||||
title: "Failed to login as guest",
|
|
||||||
description: err.data
|
|
||||||
});
|
|
||||||
}
|
|
||||||
console.error("Failed to register as guest: " + err + " " + err.data);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onAction: function(payload) {
|
onAction: function(payload) {
|
||||||
var roomIndexDelta = 1;
|
var roomIndexDelta = 1;
|
||||||
|
|
||||||
|
@ -1106,7 +1078,7 @@ module.exports = React.createClass({
|
||||||
customIsUrl={this.getCurrentIsUrl()}
|
customIsUrl={this.getCurrentIsUrl()}
|
||||||
fallbackHsUrl={this.getFallbackHsUrl()}
|
fallbackHsUrl={this.getFallbackHsUrl()}
|
||||||
onForgotPasswordClick={this.onForgotPasswordClick}
|
onForgotPasswordClick={this.onForgotPasswordClick}
|
||||||
onLoginAsGuestClick={this.props.enableGuest && this.props.config && this._registerAsGuest.bind(this, true)}
|
enableGuest={this.props.enableGuest}
|
||||||
onCancelClick={this.guestCreds ? this.onReturnToGuestClick : null}
|
onCancelClick={this.guestCreds ? this.onReturnToGuestClick : null}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
|
@ -27,10 +27,14 @@ var ServerConfig = require("../../views/login/ServerConfig");
|
||||||
/**
|
/**
|
||||||
* A wire component which glues together login UI components and Signup logic
|
* A wire component which glues together login UI components and Signup logic
|
||||||
*/
|
*/
|
||||||
module.exports = React.createClass({displayName: 'Login',
|
module.exports = React.createClass({
|
||||||
|
displayName: 'Login',
|
||||||
|
|
||||||
propTypes: {
|
propTypes: {
|
||||||
onLoggedIn: React.PropTypes.func.isRequired,
|
onLoggedIn: React.PropTypes.func.isRequired,
|
||||||
|
|
||||||
|
enableGuest: React.PropTypes.bool,
|
||||||
|
|
||||||
customHsUrl: React.PropTypes.string,
|
customHsUrl: React.PropTypes.string,
|
||||||
customIsUrl: React.PropTypes.string,
|
customIsUrl: React.PropTypes.string,
|
||||||
defaultHsUrl: React.PropTypes.string,
|
defaultHsUrl: React.PropTypes.string,
|
||||||
|
@ -45,7 +49,6 @@ module.exports = React.createClass({displayName: 'Login',
|
||||||
|
|
||||||
// login shouldn't care how password recovery is done.
|
// login shouldn't care how password recovery is done.
|
||||||
onForgotPasswordClick: React.PropTypes.func,
|
onForgotPasswordClick: React.PropTypes.func,
|
||||||
onLoginAsGuestClick: React.PropTypes.func,
|
|
||||||
onCancelClick: React.PropTypes.func,
|
onCancelClick: React.PropTypes.func,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -82,7 +85,26 @@ module.exports = React.createClass({displayName: 'Login',
|
||||||
self.setState({
|
self.setState({
|
||||||
busy: false
|
busy: false
|
||||||
});
|
});
|
||||||
|
}).done();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onLoginAsGuestClick: function() {
|
||||||
|
var self = this;
|
||||||
|
self.setState({
|
||||||
|
busy: true,
|
||||||
|
errorText: null,
|
||||||
|
loginIncorrect: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this._loginLogic.loginAsGuest().then(function(data) {
|
||||||
|
self.props.onLoggedIn(data);
|
||||||
|
}, function(error) {
|
||||||
|
self._setStateFromError(error, true);
|
||||||
|
}).finally(function() {
|
||||||
|
self.setState({
|
||||||
|
busy: false
|
||||||
|
});
|
||||||
|
}).done();
|
||||||
},
|
},
|
||||||
|
|
||||||
onUsernameChanged: function(username) {
|
onUsernameChanged: function(username) {
|
||||||
|
@ -221,9 +243,9 @@ module.exports = React.createClass({displayName: 'Login',
|
||||||
var loader = this.state.busy ? <div className="mx_Login_loader"><Loader /></div> : null;
|
var loader = this.state.busy ? <div className="mx_Login_loader"><Loader /></div> : null;
|
||||||
|
|
||||||
var loginAsGuestJsx;
|
var loginAsGuestJsx;
|
||||||
if (this.props.onLoginAsGuestClick) {
|
if (this.props.enableGuest) {
|
||||||
loginAsGuestJsx =
|
loginAsGuestJsx =
|
||||||
<a className="mx_Login_create" onClick={this.props.onLoginAsGuestClick} href="#">
|
<a className="mx_Login_create" onClick={this._onLoginAsGuestClick} href="#">
|
||||||
Login as guest
|
Login as guest
|
||||||
</a>
|
</a>
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue