// 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 Constants from '../utils/constants.jsx'; import {injectIntl, intlShape, defineMessages, FormattedMessage} from 'mm-intl'; const holders = defineMessages({ team_error: { id: 'sso_signup.team_error', defaultMessage: 'Please enter a team name' }, length_error: { id: 'sso_signup.length_error', defaultMessage: 'Name must be 3 or more characters up to a maximum of 15' }, teamName: { id: 'sso_signup.teamName', defaultMessage: 'Enter name of new team' } }); class SSOSignUpPage extends React.Component { constructor(props) { super(props); this.handleSubmit = this.handleSubmit.bind(this); this.nameChange = this.nameChange.bind(this); this.state = {name: ''}; } handleSubmit(e) { e.preventDefault(); const {formatMessage} = this.props.intl; var team = {}; var state = this.state; state.nameError = null; state.serverError = null; team.display_name = this.state.name; if (!team.display_name) { state.nameError = formatMessage(holders.team_error); this.setState(state); return; } if (team.display_name.length <= 2) { state.nameError = formatMessage(holders.length_error); this.setState(state); return; } team.name = utils.cleanUpUrlable(team.display_name); team.type = 'O'; client.createTeamWithSSO(team, this.props.service, (data) => { if (data.follow_link) { window.location.href = data.follow_link; } else { window.location.href = '/' + team.name + '/channels/town-square'; } }, (err) => { state.serverError = err.message; this.setState(state); } ); } nameChange() { this.setState({name: ReactDOM.findDOMNode(this.refs.teamname).value.trim()}); } render() { var nameError = null; var nameDivClass = 'form-group'; if (this.state.nameError) { nameError = ; nameDivClass += ' has-error'; } var serverError = null; if (this.state.serverError) { serverError =
; } var disabled = false; if (this.state.name.length <= 2) { disabled = true; } var button = null; if (this.props.service === Constants.GITLAB_SERVICE) { button = ( ); } else if (this.props.service === Constants.GOOGLE_SERVICE) { button = ( ); } return (
{nameError}
{button} {serverError}
); } } SSOSignUpPage.defaultProps = { service: '' }; SSOSignUpPage.propTypes = { intl: intlShape.isRequired, service: React.PropTypes.string }; export default injectIntl(SSOSignUpPage);