// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import {generateMfaSecret, activateMfa} from 'actions/user_actions.jsx'; import UserStore from 'stores/user_store.jsx'; import * as Utils from 'utils/utils.jsx'; import React from 'react'; import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import {browserHistory} from 'react-router/es6'; export default class Setup extends React.Component { constructor(props) { super(props); this.submit = this.submit.bind(this); this.state = {secret: '', qrCode: ''}; } componentDidMount() { const user = UserStore.getCurrentUser(); if (!user || user.mfa_active) { browserHistory.push('/'); return; } generateMfaSecret( (data) => this.setState({secret: data.secret, qrCode: data.qr_code}), (err) => this.setState({serverError: err.message}) ); } submit(e) { e.preventDefault(); const code = this.refs.code.value.replace(/\s/g, ''); if (!code || code.length === 0) { this.setState({error: Utils.localizeMessage('mfa.setup.codeError', 'Please enter the code from Google Authenticator.')}); return; } this.setState({error: null}); activateMfa( code, () => { browserHistory.push('/mfa/confirm'); }, (err) => { if (err.id === 'ent.mfa.activate.authenticate.app_error') { this.setState({error: Utils.localizeMessage('mfa.setup.badCode', 'Invalid code. If this issue persists, contact your System Administrator.')}); return; } this.setState({error: err.message}); } ); } render() { let formClass = 'form-group'; let errorContent; if (this.state.error) { errorContent =
; formClass += ' has-error'; } let mfaRequired; if (global.window.mm_config.EnforceMultifactorAuthentication === 'true') { mfaRequired = (

); } return (
{mfaRequired}


{errorContent}
); } } Setup.defaultProps = { }; Setup.propTypes = { };