// 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 {checkMfa} from 'actions/user_actions.jsx'; import {emailToLdap} from 'actions/admin_actions.jsx'; import React from 'react'; import {FormattedMessage} from 'react-intl'; export default class EmailToLDAP extends React.Component { constructor(props) { super(props); this.submit = this.submit.bind(this); this.preSubmit = this.preSubmit.bind(this); this.state = { passwordError: '', ldapError: '', ldapPasswordError: '', serverError: '', showMfa: false }; } preSubmit(e) { e.preventDefault(); var state = { passwordError: '', ldapError: '', ldapPasswordError: '', serverError: '' }; const password = this.refs.emailpassword.value; if (!password) { state.passwordError = Utils.localizeMessage('claim.email_to_ldap.pwdError', 'Please enter your password.'); this.setState(state); return; } const ldapId = this.refs.ldapid.value.trim(); if (!ldapId) { state.ldapError = Utils.localizeMessage('claim.email_to_ldap.ldapIdError', 'Please enter your AD/LDAP ID.'); this.setState(state); return; } const ldapPassword = this.refs.ldappassword.value; if (!ldapPassword) { state.ldapPasswordError = Utils.localizeMessage('claim.email_to_ldap.ldapPasswordError', 'Please enter your AD/LDAP password.'); this.setState(state); return; } state.password = password; state.ldapId = ldapId; state.ldapPassword = ldapPassword; this.setState(state); checkMfa( this.props.email, (requiresMfa) => { if (requiresMfa) { this.setState({showMfa: true}); } else { this.submit(this.props.email, password, '', ldapId, ldapPassword); } }, (err) => { this.setState({error: err.message}); } ); } submit(loginId, password, token, ldapId, ldapPassword) { emailToLdap( loginId, password, token, ldapId || this.state.ldapId, ldapPassword || this.state.ldapPassword, (data) => { if (data.follow_link) { window.location.href = data.follow_link; } }, (err) => { this.setState({serverError: err.message, showMfa: false}); } ); } render() { let serverError = null; let formClass = 'form-group'; if (this.state.serverError) { serverError =
; formClass += ' has-error'; } let passwordError = null; let passwordClass = 'form-group'; if (this.state.passwordError) { passwordError =
; passwordClass += ' has-error'; } let ldapError = null; let ldapClass = 'form-group'; if (this.state.ldapError) { ldapError =
; ldapClass += ' has-error'; } let ldapPasswordError = null; let ldapPasswordClass = 'form-group'; if (this.state.ldapPasswordError) { ldapPasswordError =
; ldapPasswordClass += ' has-error'; } let loginPlaceholder; if (global.window.mm_config.LdapLoginFieldName) { loginPlaceholder = global.window.mm_config.LdapLoginFieldName; } else { loginPlaceholder = Utils.localizeMessage('claim.email_to_ldap.ldapId', 'AD/LDAP ID'); } let passwordPlaceholder; if (global.window.mm_config.LdapPasswordFieldName) { passwordPlaceholder = global.window.mm_config.LdapPasswordFieldName; } else { passwordPlaceholder = Utils.localizeMessage('claim.email_to_ldap.ldapPwd', 'AD/LDAP Password'); } let content; if (this.state.showMfa) { content = ( ); } else { content = (

{passwordError}

{ldapError}
{ldapPasswordError} {serverError}
); } return (

{content}
); } } EmailToLDAP.defaultProps = { }; EmailToLDAP.propTypes = { email: React.PropTypes.string };