diff options
Diffstat (limited to 'cmd/web/js/signin.jsx')
-rw-r--r-- | cmd/web/js/signin.jsx | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd/web/js/signin.jsx b/cmd/web/js/signin.jsx new file mode 100644 index 0000000..443a461 --- /dev/null +++ b/cmd/web/js/signin.jsx | |||
@@ -0,0 +1,52 @@ | |||
1 | var Api = require('./api.js').Api; | ||
2 | var App = require('./app.js'); | ||
3 | var classNames = require('classnames'); | ||
4 | |||
5 | module.exports.SigninForm = React.createClass({ | ||
6 | getInitialState: function() { | ||
7 | return {'hideMsg': true, 'msg': '', 'msgOk': false, 'password': '', 'email': ''}; | ||
8 | }, | ||
9 | handleSubmit: function(e) { | ||
10 | Api.Call('SIGNIN', {'password': this.state.password, 'email': this.state.email}, function(err, status, data) { | ||
11 | if (err) { | ||
12 | console.error(err, data); | ||
13 | this.displayMessage(App.errorCodeToMessage(err.code), false); | ||
14 | return; | ||
15 | } | ||
16 | |||
17 | this.displayMessage('OK', true); | ||
18 | this.props.onSuccess(data.token); | ||
19 | |||
20 | }.bind(this)); | ||
21 | e.preventDefault(); | ||
22 | }, | ||
23 | handlePasswordChange: function(event) { | ||
24 | this.setState({'password': event.target.value}); | ||
25 | }, | ||
26 | handleEmailChange: function(event) { | ||
27 | this.setState({'email': event.target.value}); | ||
28 | }, | ||
29 | hideMessage: function() { | ||
30 | this.setState({'hideMsg': true}); | ||
31 | }, | ||
32 | displayMessage: function(msg, ok) { | ||
33 | this.setState({'msg': msg, 'msgOk': ok, 'hideMsg': false}); | ||
34 | }, | ||
35 | render: function() { | ||
36 | var cName = classNames('form-message', {'hidden': this.state.hideMsg, 'message-ok': this.state.msgOk}); | ||
37 | return ( | ||
38 | <div className='row justify-content-center sign-in'> | ||
39 | <div className='col-lg-offset-4 col-lg-4 col-md-offset-4 col-md-4 col-sm-offset-4 col-sm-4 col-xs-offset-1 col-xs-10'> | ||
40 | <form role='form' onSubmit={this.handleSubmit}> | ||
41 | <input className='form-control' type='email' placeholder='email' onChange={this.handleEmailChange} /> | ||
42 | <input className='form-control' type='password' placeholder='password' onChange={this.handlePasswordChange} /> | ||
43 | <input className='form-control submit' type='submit' value='Sign In' /> | ||
44 | <div className={cName} ref='message'>{this.state.msg}</div> | ||
45 | </form> | ||
46 | <a href='#' onClick={App.onInternNavigation.bind(this, '/signup')}><u>Sign up</u></a> | ||
47 | </div> | ||
48 | </div> | ||
49 | ); | ||
50 | } | ||
51 | }); | ||
52 | |||