mirror of
https://github.com/SchildiChat/element-web.git
synced 2024-10-01 01:26:12 -04:00
Remove old registration files. Move CaptchaForm to React SDK.
This commit is contained in:
parent
d372018e61
commit
f62312fbf3
@ -1,69 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015 OpenMarket Ltd
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var React = require('react');
|
|
||||||
var sdk = require('matrix-react-sdk')
|
|
||||||
|
|
||||||
var DIV_ID = 'mx_recaptcha';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A pure UI component which displays a captcha form.
|
|
||||||
*/
|
|
||||||
module.exports = React.createClass({
|
|
||||||
displayName: 'CaptchaForm',
|
|
||||||
|
|
||||||
propTypes: {
|
|
||||||
onCaptchaLoaded: React.PropTypes.func.isRequired // called with div id name
|
|
||||||
},
|
|
||||||
|
|
||||||
getDefaultProps: function() {
|
|
||||||
return {
|
|
||||||
onCaptchaLoaded: function() {
|
|
||||||
console.error("Unhandled onCaptchaLoaded");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
componentDidMount: function() {
|
|
||||||
// Just putting a script tag into the returned jsx doesn't work, annoyingly,
|
|
||||||
// so we do this instead.
|
|
||||||
var self = this;
|
|
||||||
if (this.refs.recaptchaContainer) {
|
|
||||||
console.log("Loading recaptcha script...");
|
|
||||||
var scriptTag = document.createElement('script');
|
|
||||||
window.mx_on_recaptcha_loaded = function() {
|
|
||||||
console.log("Loaded recaptcha script.");
|
|
||||||
self.props.onCaptchaLoaded(DIV_ID);
|
|
||||||
};
|
|
||||||
scriptTag.setAttribute(
|
|
||||||
'src', global.location.protocol+"//www.google.com/recaptcha/api.js?onload=mx_on_recaptcha_loaded&render=explicit"
|
|
||||||
);
|
|
||||||
this.refs.recaptchaContainer.appendChild(scriptTag);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function() {
|
|
||||||
// FIXME: Tight coupling with the div id and SignupStages.js
|
|
||||||
return (
|
|
||||||
<div ref="recaptchaContainer">
|
|
||||||
This Home Server would like to make sure you are not a robot
|
|
||||||
<div id={DIV_ID}></div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
@ -23,7 +23,7 @@ var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
|||||||
var dis = require('matrix-react-sdk/lib/dispatcher');
|
var dis = require('matrix-react-sdk/lib/dispatcher');
|
||||||
var ServerConfig = require("./ServerConfig");
|
var ServerConfig = require("./ServerConfig");
|
||||||
var RegistrationForm = require("./RegistrationForm");
|
var RegistrationForm = require("./RegistrationForm");
|
||||||
var CaptchaForm = require("./CaptchaForm");
|
var CaptchaForm = require("matrix-react-sdk/lib/components/login/CaptchaForm");
|
||||||
var Signup = require("matrix-react-sdk/lib/Signup");
|
var Signup = require("matrix-react-sdk/lib/Signup");
|
||||||
var MIN_PASSWORD_LENGTH = 6;
|
var MIN_PASSWORD_LENGTH = 6;
|
||||||
|
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015 OpenMarket Ltd
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var extend = require('matrix-react-sdk/lib/extend');
|
|
||||||
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg');
|
|
||||||
var BaseRegisterController = require('matrix-react-sdk/lib/controllers/templates/Register.js');
|
|
||||||
|
|
||||||
var RegisterController = {};
|
|
||||||
extend(RegisterController, BaseRegisterController);
|
|
||||||
|
|
||||||
RegisterController.onRegistered = function(user_id, access_token) {
|
|
||||||
MatrixClientPeg.replaceUsingAccessToken(
|
|
||||||
this.state.hs_url, this.state.is_url, user_id, access_token
|
|
||||||
);
|
|
||||||
|
|
||||||
this.setState({
|
|
||||||
step: 'profile',
|
|
||||||
busy: true
|
|
||||||
});
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
var cli = MatrixClientPeg.get();
|
|
||||||
cli.getProfileInfo(cli.credentials.userId).done(function(result) {
|
|
||||||
self.setState({
|
|
||||||
avatarUrl: result.avatar_url,
|
|
||||||
busy: false
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(err) {
|
|
||||||
console.err(err);
|
|
||||||
self.setState({
|
|
||||||
busy: false
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
RegisterController.onAccountReady = function() {
|
|
||||||
if (this.props.onLoggedIn) {
|
|
||||||
this.props.onLoggedIn();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = RegisterController;
|
|
@ -85,6 +85,5 @@ skin['organisms.UserSettings'] = require('./views/organisms/UserSettings');
|
|||||||
skin['organisms.ViewSource'] = require('./views/organisms/ViewSource');
|
skin['organisms.ViewSource'] = require('./views/organisms/ViewSource');
|
||||||
skin['pages.CompatibilityPage'] = require('./views/pages/CompatibilityPage');
|
skin['pages.CompatibilityPage'] = require('./views/pages/CompatibilityPage');
|
||||||
skin['pages.MatrixChat'] = require('./views/pages/MatrixChat');
|
skin['pages.MatrixChat'] = require('./views/pages/MatrixChat');
|
||||||
skin['templates.Register'] = require('./views/templates/Register');
|
|
||||||
|
|
||||||
module.exports = skin;
|
module.exports = skin;
|
@ -1,216 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015 OpenMarket Ltd
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var React = require('react');
|
|
||||||
|
|
||||||
var sdk = require('matrix-react-sdk')
|
|
||||||
var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg')
|
|
||||||
|
|
||||||
var RegisterController = require('../../../../controllers/templates/Register')
|
|
||||||
var ServerConfig = require("../../../../components/login/ServerConfig");
|
|
||||||
|
|
||||||
var config = require('../../../../../config.json');
|
|
||||||
|
|
||||||
module.exports = React.createClass({
|
|
||||||
displayName: 'Register',
|
|
||||||
mixins: [RegisterController],
|
|
||||||
|
|
||||||
getInitialState: function() {
|
|
||||||
// TODO: factor out all localstorage stuff into its own home.
|
|
||||||
// This is common to Login, Register and MatrixClientPeg
|
|
||||||
var localStorage = window.localStorage;
|
|
||||||
var hs_url, is_url;
|
|
||||||
if (localStorage) {
|
|
||||||
hs_url = localStorage.getItem("mx_hs_url");
|
|
||||||
is_url = localStorage.getItem("mx_is_url");
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure we have our MatrixClient set up whatever
|
|
||||||
// Useful for debugging only.
|
|
||||||
// MatrixClientPeg.replaceUsingUrls(
|
|
||||||
// hs_url || config.default_hs_url,
|
|
||||||
// is_url || config.default_is_url
|
|
||||||
// );
|
|
||||||
|
|
||||||
return {
|
|
||||||
customHsUrl: hs_url || config.default_hs_url,
|
|
||||||
customIsUrl: is_url || config.default_is_url,
|
|
||||||
serverConfigVisible: (hs_url && hs_url !== config.default_hs_url ||
|
|
||||||
is_url && is_url !== config.default_is_url)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
getRegFormVals: function() {
|
|
||||||
return {
|
|
||||||
email: this.refs.email.value.trim(),
|
|
||||||
username: this.refs.username.value.trim(),
|
|
||||||
password: this.refs.password.value.trim(),
|
|
||||||
confirmPassword: this.refs.confirmPassword.value.trim()
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
getHsUrl: function() {
|
|
||||||
if (this.state.serverConfigVisible) {
|
|
||||||
return this.state.customHsUrl;
|
|
||||||
} else {
|
|
||||||
return config.default_hs_url;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
getIsUrl: function() {
|
|
||||||
if (this.state.serverConfigVisible) {
|
|
||||||
return this.state.customIsUrl;
|
|
||||||
} else {
|
|
||||||
return config.default_is_url;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onServerConfigVisibleChange: function(ev) {
|
|
||||||
this.setState({
|
|
||||||
serverConfigVisible: ev.target.checked
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
onServerUrlChanged: function(newUrl) {
|
|
||||||
this.setState({
|
|
||||||
customHsUrl: this.refs.serverConfig.getHsUrl(),
|
|
||||||
customIsUrl: this.refs.serverConfig.getIsUrl(),
|
|
||||||
});
|
|
||||||
this.forceUpdate();
|
|
||||||
},
|
|
||||||
|
|
||||||
onProfileContinueClicked: function() {
|
|
||||||
this.onAccountReady();
|
|
||||||
},
|
|
||||||
|
|
||||||
componentForStep: function(step) {
|
|
||||||
switch (step) {
|
|
||||||
case 'initial':
|
|
||||||
var serverConfigStyle = {};
|
|
||||||
serverConfigStyle.display = this.state.serverConfigVisible ? 'block' : 'none';
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<form onSubmit={this.onInitialStageSubmit}>
|
|
||||||
<input className="mx_Login_field" type="text" ref="email" autoFocus={true} placeholder="Email address" defaultValue={this.savedParams.email} /><br />
|
|
||||||
<input className="mx_Login_field" type="text" ref="username" placeholder="User name" defaultValue={this.savedParams.username} /><br />
|
|
||||||
<input className="mx_Login_field" type="password" ref="password" placeholder="Password" defaultValue={this.savedParams.password} /><br />
|
|
||||||
<input className="mx_Login_field" type="password" ref="confirmPassword" placeholder="Confirm password" defaultValue={this.savedParams.confirmPassword} /><br />
|
|
||||||
|
|
||||||
<input className="mx_Login_checkbox" id="advanced" type="checkbox" checked={this.state.serverConfigVisible} onChange={this.onServerConfigVisibleChange} />
|
|
||||||
<label htmlFor="advanced">Use custom server options (advanced)</label>
|
|
||||||
<div style={serverConfigStyle}>
|
|
||||||
<ServerConfig ref="serverConfig"
|
|
||||||
defaultHsUrl={this.state.customHsUrl} defaultIsUrl={this.state.customIsUrl}
|
|
||||||
onHsUrlChanged={this.onServerUrlChanged} onIsUrlChanged={this.onServerUrlChanged} />
|
|
||||||
</div>
|
|
||||||
<br />
|
|
||||||
<input className="mx_Login_submit" type="submit" value="Register" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
// XXX: clearly these should be separate organisms
|
|
||||||
case 'stage_m.login.email.identity':
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
Please check your email to continue registration.
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
case 'stage_m.login.recaptcha':
|
|
||||||
return (
|
|
||||||
<div ref="recaptchaContainer">
|
|
||||||
This Home Server would like to make sure you are not a robot
|
|
||||||
<div id="mx_recaptcha"></div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
registerContent: function() {
|
|
||||||
if (this.state.busy) {
|
|
||||||
var Loader = sdk.getComponent("atoms.Spinner");
|
|
||||||
return (
|
|
||||||
<Loader />
|
|
||||||
);
|
|
||||||
} else if (this.state.step == 'profile') {
|
|
||||||
var ChangeDisplayName = sdk.getComponent('molecules.ChangeDisplayName');
|
|
||||||
var ChangeAvatar = sdk.getComponent('molecules.ChangeAvatar');
|
|
||||||
return (
|
|
||||||
<div className="mx_Login_profile">
|
|
||||||
Set a display name:
|
|
||||||
<ChangeDisplayName />
|
|
||||||
Upload an avatar:
|
|
||||||
<ChangeAvatar initialAvatarUrl={MatrixClientPeg.get().mxcUrlToHttp(this.state.avatarUrl)} />
|
|
||||||
<button onClick={this.onProfileContinueClicked}>Continue</button>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<h2>Create an account</h2>
|
|
||||||
{this.componentForStep(this.state.step)}
|
|
||||||
<div className="mx_Login_error">{this.state.errorText}</div>
|
|
||||||
<a className="mx_Login_create" onClick={this.showLogin} href="#">I already have an account</a>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onBadFields: function(bad) {
|
|
||||||
var keys = Object.keys(bad);
|
|
||||||
var strings = [];
|
|
||||||
for (var i = 0; i < keys.length; ++i) {
|
|
||||||
switch (bad[keys[i]]) {
|
|
||||||
case this.FieldErrors.PasswordMismatch:
|
|
||||||
strings.push("Passwords don't match");
|
|
||||||
break;
|
|
||||||
case this.FieldErrors.Missing:
|
|
||||||
strings.push("Missing "+keys[i]);
|
|
||||||
break;
|
|
||||||
case this.FieldErrors.TooShort:
|
|
||||||
strings.push(keys[i]+" is too short");
|
|
||||||
break;
|
|
||||||
case this.FieldErrors.InUse:
|
|
||||||
strings.push(keys[i]+" is already taken");
|
|
||||||
break;
|
|
||||||
case this.FieldErrors.Length:
|
|
||||||
strings.push(keys[i] + " is not long enough.");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
console.error("Unhandled FieldError: %s", bad[keys[i]]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var errtxt = strings.join(', ');
|
|
||||||
this.setState({
|
|
||||||
errorText: errtxt
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function() {
|
|
||||||
return (
|
|
||||||
<div className="mx_Login">
|
|
||||||
<div className="mx_Login_box">
|
|
||||||
<div className="mx_Login_logo">
|
|
||||||
<img src="img/logo.png" width="249" height="78" alt="vector"/>
|
|
||||||
</div>
|
|
||||||
{this.registerContent()}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
Loading…
Reference in New Issue
Block a user