1 import Api from './api.js';
2 import App from './app.js';
3 import classNames from 'classnames';
4 import React from 'react';
6 class OtpQrCode extends React.Component {
10 <img src={this.props.img} />
11 <p>{this.props.secret}</p>
17 class OtpEnrollForm extends React.Component {
20 this.state = {'hideMsg': true, 'msg': '', 'msgOk': false, 'pass': ''};
23 handleSubmit = (e) => {
24 Api.Call('OTP_VALIDATE', {'pass': this.state.pass}, function(err, status, data) {
26 console.error(err, data);
27 this.displayMessage(App.errorCodeToMessage(err.code), false);
31 this.displayMessage('OK', true);
32 this.props.onSuccess(data.token);
39 handlePassChange = (event) => {
40 this.setState({'pass': event.target.value});
44 this.setState({'hideMsg': true});
47 displayMessage = (msg, ok) => {
48 this.setState({'msg': msg, 'msgOk': ok, 'hideMsg': false});
52 var cName = classNames('form-message', {'hidden': this.state.hideMsg, 'message-ok': this.state.msgOk});
57 <div className="row justify-content-center">
58 <p>Please setup 2FA (Google Authenticator, Authy)</p>
59 <OtpQrCode img={this.props.img} secret={this.props.secret} />
63 <div className="row otp-enroll">
64 <div className="offset-4 col-4 col-xs-offset-1 col-xs-10 text-center">
66 <div className="row justify-content-center">
67 <form role="form" onSubmit={this.handleSubmit}>
68 <input className="form-control" type="pass" placeholder="code" onChange={this.handlePassChange} />
69 <input className="form-control submit" type="submit" value="Validate" />
70 <div className={cName}>{this.state.msg}</div>
79 export default OtpEnrollForm;