Wire up change password

This commit is contained in:
Erik Johnston 2015-07-16 10:23:31 +01:00
parent edc3302d89
commit 02045858f7
2 changed files with 57 additions and 5 deletions

View file

@ -19,23 +19,39 @@ limitations under the License.
var React = require('react'); var React = require('react');
var ChangePasswordController = require("../../../../src/controllers/molecules/ChangePassword"); var ChangePasswordController = require("../../../../src/controllers/molecules/ChangePassword");
var Loader = require("react-loader");
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'ChangePassword', displayName: 'ChangePassword',
mixins: [ChangePasswordController], mixins: [ChangePasswordController],
onClickChange: function() {
var old_password = this.refs.old_input.getDOMNode().value;
var new_password = this.refs.new_input.getDOMNode().value;
var confirm_password = this.refs.confirm_input.getDOMNode().value;
if (new_password != confirm_password) {
this.setState({
state: this.Phases.Error,
errorString: "Passwords don't match"
});
} else {
this.changePassword(old_password, new_password);
}
},
render: function() { render: function() {
switch (this.state.phase) { switch (this.state.phase) {
case this.Phases.Edit: case this.Phases.Edit:
case this.Phases.Error: case this.Phases.Error:
return ( return (
<div> <div>
<label>Old password <input type="password" /></label> <div>{this.state.errorString}</div>
<label>New password <input type="password" /></label> <label>Old password <input type="password" ref="old_input"/></label>
<label>Confirm password <input type="password" /></label> <label>New password <input type="password" ref="new_input"/></label>
<label>Confirm password <input type="password" ref="confirm_input"/></label>
<div> <div>
<button>Change Password</button> <button onClick={this.onClickChange}>Change Password</button>
<button onClick={this.props.onFinished}>Cancel</button> <button onClick={this.props.onFinished}>Cancel</button>
</div> </div>
</div> </div>
@ -44,6 +60,13 @@ module.exports = React.createClass({
return ( return (
<Loader /> <Loader />
); );
case this.Phases.Success:
return (
<div>
Success!
<button onClick={this.props.onFinished}>Ok</button>
</div>
)
} }
} }
}); });

View file

@ -30,6 +30,7 @@ module.exports = {
Edit: "edit", Edit: "edit",
Uploading: "uploading", Uploading: "uploading",
Error: "error", Error: "error",
Success: "Success"
}, },
getDefaultProps: function() { getDefaultProps: function() {
@ -41,10 +42,38 @@ module.exports = {
getInitialState: function() { getInitialState: function() {
return { return {
phase: this.Phases.Edit, phase: this.Phases.Edit,
errorString: ''
} }
}, },
changePassword: function(old_password, new_password) { changePassword: function(old_password, new_password) {
// DO SOMETHING. var cli = MatrixClientPeg.get();
var authDict = {
type: 'm.login.password',
user: cli.credentials.userId,
password: old_password
};
this.setState({
phase: this.Phases.Uploading,
errorString: '',
})
var d = cli.setPassword(authDict, new_password);
var self = this;
d.then(function() {
self.setState({
phase: self.Phases.Success,
errorString: '',
})
// self.props.onFinished();
}, function(err) {
self.setState({
phase: self.Phases.Error,
errorString: err.toString()
})
});
}, },
} }