diff options
Diffstat (limited to 'web/react/components/login.jsx')
-rw-r--r-- | web/react/components/login.jsx | 146 |
1 files changed, 25 insertions, 121 deletions
diff --git a/web/react/components/login.jsx b/web/react/components/login.jsx index d87bd20ad..9afaa8b0d 100644 --- a/web/react/components/login.jsx +++ b/web/react/components/login.jsx @@ -2,97 +2,19 @@ // See License.txt for license information. import * as Utils from '../utils/utils.jsx'; -import * as Client from '../utils/client.jsx'; -import UserStore from '../stores/user_store.jsx'; -import BrowserStore from '../stores/browser_store.jsx'; +import LoginEmail from './login_email.jsx'; +import LoginLdap from './login_ldap.jsx'; export default class Login extends React.Component { constructor(props) { super(props); - this.handleSubmit = this.handleSubmit.bind(this); - this.state = {}; } - handleSubmit(e) { - e.preventDefault(); - var state = {}; - - const name = this.props.teamName; - if (!name) { - state.serverError = 'Bad team name'; - this.setState(state); - return; - } - - const email = ReactDOM.findDOMNode(this.refs.email).value.trim(); - if (!email) { - state.serverError = 'An email is required'; - this.setState(state); - return; - } - - const password = ReactDOM.findDOMNode(this.refs.password).value.trim(); - if (!password) { - state.serverError = 'A password is required'; - this.setState(state); - return; - } - - if (!BrowserStore.isLocalStorageSupported()) { - state.serverError = 'This service requires local storage to be enabled. Please enable it or exit private browsing.'; - this.setState(state); - return; - } - - state.serverError = ''; - this.setState(state); - - Client.loginByEmail(name, email, password, - () => { - UserStore.setLastEmail(email); - - const redirect = Utils.getUrlParameter('redirect'); - if (redirect) { - window.location.href = decodeURIComponent(redirect); - } else { - window.location.href = '/' + name + '/channels/town-square'; - } - }, - (err) => { - if (err.message === 'Login failed because email address has not been verified') { - window.location.href = '/verify_email?teamname=' + encodeURIComponent(name) + '&email=' + encodeURIComponent(email); - return; - } - state.serverError = err.message; - this.valid = false; - this.setState(state); - } - ); - } render() { - let serverError; - if (this.state.serverError) { - serverError = <label className='control-label'>{this.state.serverError}</label>; - } - let priorEmail = UserStore.getLastEmail(); - - const emailParam = Utils.getUrlParameter('email'); - if (emailParam) { - priorEmail = decodeURIComponent(emailParam); - } - const teamDisplayName = this.props.teamDisplayName; const teamName = this.props.teamName; - let focusEmail = false; - let focusPassword = false; - if (priorEmail === '') { - focusEmail = true; - } else { - focusPassword = true; - } - let loginMessage = []; if (global.window.mm_config.EnableSignUpWithGitLab === 'true') { loginMessage.push( @@ -106,9 +28,16 @@ export default class Login extends React.Component { ); } - let errorClass = ''; - if (serverError) { - errorClass = ' has-error'; + if (global.window.mm_config.EnableSignUpWithGoogle === 'true') { + loginMessage.push( + <a + className='btn btn-custom-login google' + href={'/' + teamName + '/login/google'} + > + <span className='icon' /> + <span>{'with Google Apps'}</span> + </a> + ); } const verifiedParam = Utils.getUrlParameter('verified'); @@ -125,39 +54,9 @@ export default class Login extends React.Component { let emailSignup; if (global.window.mm_config.EnableSignUpWithEmail === 'true') { emailSignup = ( - <div className='signup__email-container'> - <div className={'form-group' + errorClass}> - <input - autoFocus={focusEmail} - type='email' - className='form-control' - name='email' - defaultValue={priorEmail} - ref='email' - placeholder='Email' - spellCheck='false' - /> - </div> - <div className={'form-group' + errorClass}> - <input - autoFocus={focusPassword} - type='password' - className='form-control' - name='password' - ref='password' - placeholder='Password' - spellCheck='false' - /> - </div> - <div className='form-group'> - <button - type='submit' - className='btn btn-primary' - > - {'Sign in'} - </button> - </div> - </div> + <LoginEmail + teamName={this.props.teamName} + /> ); } @@ -211,25 +110,30 @@ export default class Login extends React.Component { ); } + let ldapLogin = null; + if (global.window.mm_config.EnableLdap === 'true') { + ldapLogin = ( + <LoginLdap + teamName={this.props.teamName} + /> + ); + } + return ( <div className='signup-team__container'> <h5 className='margin--less'>{'Sign in to:'}</h5> <h2 className='signup-team__name'>{teamDisplayName}</h2> <h2 className='signup-team__subdomain'>{'on '}{global.window.mm_config.SiteName}</h2> - <form onSubmit={this.handleSubmit}> {verifiedBox} - <div className={'form-group' + errorClass}> - {serverError} - </div> {loginMessage} {emailSignup} + {ldapLogin} {userSignUp} <div className='form-group margin--extra form-group--small'> <span><a href='/find_team'>{'Find your other teams'}</a></span> </div> {forgotPassword} {teamSignUp} - </form> </div> ); } |