Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Move guest registration into the login logic #407

Merged
merged 1 commit into from
Aug 11, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/Signup.js
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,26 @@ class Login extends Signup {
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) {
var self = this;
var isEmail = username.indexOf("@") > 0;
Expand Down
30 changes: 1 addition & 29 deletions src/components/structures/MatrixChat.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
var roomIndexDelta = 1;

Expand Down Expand Up @@ -1106,7 +1078,7 @@ module.exports = React.createClass({
customIsUrl={this.getCurrentIsUrl()}
fallbackHsUrl={this.getFallbackHsUrl()}
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}
/>
);
Expand Down
30 changes: 26 additions & 4 deletions src/components/structures/login/Login.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,14 @@ var ServerConfig = require("../../views/login/ServerConfig");
/**
* 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: {
onLoggedIn: React.PropTypes.func.isRequired,

enableGuest: React.PropTypes.bool,

customHsUrl: React.PropTypes.string,
customIsUrl: React.PropTypes.string,
defaultHsUrl: React.PropTypes.string,
Expand All @@ -45,7 +49,6 @@ module.exports = React.createClass({displayName: 'Login',

// login shouldn't care how password recovery is done.
onForgotPasswordClick: React.PropTypes.func,
onLoginAsGuestClick: React.PropTypes.func,
onCancelClick: React.PropTypes.func,
},

Expand Down Expand Up @@ -82,7 +85,26 @@ module.exports = React.createClass({displayName: 'Login',
self.setState({
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) {
Expand Down Expand Up @@ -221,9 +243,9 @@ module.exports = React.createClass({displayName: 'Login',
var loader = this.state.busy ? <div className="mx_Login_loader"><Loader /></div> : null;

var loginAsGuestJsx;
if (this.props.onLoginAsGuestClick) {
if (this.props.enableGuest) {
loginAsGuestJsx =
<a className="mx_Login_create" onClick={this.props.onLoginAsGuestClick} href="#">
<a className="mx_Login_create" onClick={this._onLoginAsGuestClick} href="#">
Login as guest
</a>
}
Expand Down