// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import LoginMfa from 'components/login/components/login_mfa.jsx'; import * as Utils from 'utils/utils.jsx'; import Constants from 'utils/constants.jsx'; import {checkMfa} from 'actions/user_actions.jsx'; import {emailToOAuth} from 'actions/admin_actions.jsx'; import React from 'react'; import ReactDOM from 'react-dom'; import {FormattedMessage} from 'react-intl'; export default class EmailToOAuth extends React.Component { constructor(props) { super(props); this.submit = this.submit.bind(this); this.preSubmit = this.preSubmit.bind(this); this.state = {showMfa: false, password: ''}; } preSubmit(e) { e.preventDefault(); var state = {}; var password = ReactDOM.findDOMNode(this.refs.password).value; if (!password) { state.error = Utils.localizeMessage('claim.email_to_oauth.pwdError', 'Please enter your password.'); this.setState(state); return; } this.setState({password}); state.error = null; this.setState(state); checkMfa( this.props.email, (requiresMfa) => { if (requiresMfa) { this.setState({showMfa: true}); } else { this.submit(this.props.email, password, ''); } }, (err) => { this.setState({error: err.message}); } ); } submit(loginId, password, token) { emailToOAuth( loginId, password, token, this.props.newType, (data) => { if (data.follow_link) { window.location.href = data.follow_link; } }, (err) => { this.setState({error: err.message, showMfa: false}); } ); } render() { var error = null; if (this.state.error) { error =
; } var formClass = 'form-group'; if (error) { formClass += ' has-error'; } const type = (this.props.newType === Constants.SAML_SERVICE ? Constants.SAML_SERVICE.toUpperCase() : Utils.toTitleCase(this.props.newType)); const uiType = `${type} SSO`; let content; if (this.state.showMfa) { content = ( ); } else { content = (

{error}
); } return (

{content}
); } } EmailToOAuth.defaultProps = { }; EmailToOAuth.propTypes = { newType: React.PropTypes.string, email: React.PropTypes.string };