// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import * as Utils from '../utils/utils.jsx'; import * as client from '../utils/client.jsx'; import {injectIntl, intlShape, defineMessages, FormattedMessage} from 'mm-intl'; const holders = defineMessages({ error: { id: 'password_send.error', defaultMessage: 'Please enter a valid email address.' }, link: { id: 'password_send.link', defaultMessage: '

A password reset link has been sent to {email} for your {teamDisplayName} team on {hostname}.

' }, checkInbox: { id: 'password_send.checkInbox', defaultMessage: 'Please check your inbox.' }, email: { id: 'password_send.email', defaultMessage: 'Email' } }); class PasswordResetSendLink extends React.Component { constructor(props) { super(props); this.handleSendLink = this.handleSendLink.bind(this); this.state = {}; } handleSendLink(e) { e.preventDefault(); var state = {}; const {formatMessage} = this.props.intl; var email = ReactDOM.findDOMNode(this.refs.email).value.trim().toLowerCase(); if (!email || !Utils.isEmail(email)) { state.error = formatMessage(holders.error); this.setState(state); return; } state.error = null; this.setState(state); var data = {}; data.email = email; data.name = this.props.teamName; client.sendPasswordReset(data, function passwordResetSent() { this.setState({error: null, updateText: formatMessage(holders.link, {email: email, teamDisplayName: this.props.teamDisplayName, hostname: window.location.hostname}), moreUpdateText: formatMessage(holders.checkInbox)}); $(ReactDOM.findDOMNode(this.refs.reset_form)).hide(); }.bind(this), function passwordResetFailedToSend(err) { this.setState({error: err.message, update_text: null, moreUpdateText: null}); }.bind(this) ); } render() { var updateText = null; if (this.state.updateText) { updateText = (
); } var error = null; if (this.state.error) { error =
; } var formClass = 'form-group'; if (error) { formClass += ' has-error'; } const {formatMessage} = this.props.intl; return (

{updateText}

{error}
); } } PasswordResetSendLink.defaultProps = { teamName: '', teamDisplayName: '' }; PasswordResetSendLink.propTypes = { intl: intlShape.isRequired, teamName: React.PropTypes.string, teamDisplayName: React.PropTypes.string }; export default injectIntl(PasswordResetSendLink);