diff options
Diffstat (limited to 'cmd/web/js/password_reset.jsx')
-rw-r--r-- | cmd/web/js/password_reset.jsx | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cmd/web/js/password_reset.jsx b/cmd/web/js/password_reset.jsx new file mode 100644 index 0000000..8cbdc60 --- /dev/null +++ b/cmd/web/js/password_reset.jsx | |||
@@ -0,0 +1,57 @@ | |||
1 | import Api from './api.js'; | ||
2 | import App from './app.js'; | ||
3 | import classNames from 'classnames'; | ||
4 | import React from 'react'; | ||
5 | |||
6 | class PasswordResetForm extends React.Component { | ||
7 | constructor(props) { | ||
8 | super(props); | ||
9 | this.state = {'hideMsg': true, 'msg': '', 'msgOk': false, 'email': ''}; | ||
10 | } | ||
11 | |||
12 | handleSubmit = (e) => { | ||
13 | Api.Call('RESET_PASSWORD', {'email': this.state.email}, function(err, status, data) { | ||
14 | if (err) { | ||
15 | console.error(err, data); | ||
16 | this.displayMessage(App.errorCodeToMessage(err.code), false); | ||
17 | return; | ||
18 | } | ||
19 | |||
20 | this.displayMessage('You will receive a reset link to reset your password.', true); | ||
21 | if (this.props.onSuccess) { | ||
22 | this.props.onSuccess(); | ||
23 | } | ||
24 | |||
25 | }.bind(this)); | ||
26 | e.preventDefault(); | ||
27 | } | ||
28 | |||
29 | handleEmailChange = (event) => { | ||
30 | this.setState({'email': event.target.value}); | ||
31 | } | ||
32 | |||
33 | hideMessage = () => { | ||
34 | this.setState({'hideMsg': true}); | ||
35 | } | ||
36 | |||
37 | displayMessage = (msg, ok) => { | ||
38 | this.setState({'msg': msg, 'msgOk': ok, 'hideMsg': false}); | ||
39 | } | ||
40 | |||
41 | render = () => { | ||
42 | var cName = classNames('form-message', {'hidden': this.state.hideMsg, 'message-ok': this.state.msgOk}); | ||
43 | return ( | ||
44 | <div className="row sign-in"> | ||
45 | <div className="offset-4 col-4 col-xs-offset-1 col-xs-10 text-center"> | ||
46 | <form role="form" onSubmit={this.handleSubmit}> | ||
47 | <input className="form-control" type="email" placeholder="email" onChange={this.handleEmailChange} /> | ||
48 | <input className="form-control submit" type="submit" value="Reset" /> | ||
49 | <div className={cName}>{this.state.msg}</div> | ||
50 | </form> | ||
51 | </div> | ||
52 | </div> | ||
53 | ); | ||
54 | } | ||
55 | } | ||
56 | |||
57 | export default PasswordResetForm; \ No newline at end of file | ||