From 12896bd23eeba79884245c1c29fdc568cf21a7fa Mon Sep 17 00:00:00 2001
From: Christopher Speller <crspeller@gmail.com>
Date: Mon, 14 Mar 2016 08:50:46 -0400
Subject: Converting to Webpack. Stage 1.

---
 webapp/components/login_ldap.jsx | 144 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 144 insertions(+)
 create mode 100644 webapp/components/login_ldap.jsx

(limited to 'webapp/components/login_ldap.jsx')

diff --git a/webapp/components/login_ldap.jsx b/webapp/components/login_ldap.jsx
new file mode 100644
index 000000000..b9997dec4
--- /dev/null
+++ b/webapp/components/login_ldap.jsx
@@ -0,0 +1,144 @@
+// 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 'react-intl';
+
+const holders = defineMessages({
+    badTeam: {
+        id: 'login_ldap.badTeam',
+        defaultMessage: 'Bad team name'
+    },
+    idReq: {
+        id: 'login_ldap.idlReq',
+        defaultMessage: 'An LDAP ID is required'
+    },
+    pwdReq: {
+        id: 'login_ldap.pwdReq',
+        defaultMessage: 'An LDAP password is required'
+    },
+    username: {
+        id: 'login_ldap.username',
+        defaultMessage: 'LDAP Username'
+    },
+    pwd: {
+        id: 'login_ldap.pwd',
+        defaultMessage: 'LDAP Password'
+    }
+});
+
+import React from 'react';
+
+class LoginLdap extends React.Component {
+    constructor(props) {
+        super(props);
+
+        this.handleSubmit = this.handleSubmit.bind(this);
+
+        this.state = {
+            serverError: ''
+        };
+    }
+    handleSubmit(e) {
+        e.preventDefault();
+        const {formatMessage} = this.props.intl;
+        var state = {};
+
+        const teamName = this.props.teamName;
+        if (!teamName) {
+            state.serverError = formatMessage(holders.badTeam);
+            this.setState(state);
+            return;
+        }
+
+        const id = this.refs.id.value.trim();
+        if (!id) {
+            state.serverError = formatMessage(holders.idReq);
+            this.setState(state);
+            return;
+        }
+
+        const password = this.refs.password.value.trim();
+        if (!password) {
+            state.serverError = formatMessage(holders.pwdReq);
+            this.setState(state);
+            return;
+        }
+
+        state.serverError = '';
+        this.setState(state);
+
+        Client.loginByLdap(teamName, id, password,
+            () => {
+                const redirect = Utils.getUrlParameter('redirect');
+                if (redirect) {
+                    window.location.href = decodeURIComponent(redirect);
+                } else {
+                    window.location.href = '/' + teamName + '/channels/town-square';
+                }
+            },
+            (err) => {
+                state.serverError = err.message;
+                this.setState(state);
+            }
+        );
+    }
+    render() {
+        let serverError;
+        let errorClass = '';
+        if (this.state.serverError) {
+            serverError = <label className='control-label'>{this.state.serverError}</label>;
+            errorClass = ' has-error';
+        }
+        const {formatMessage} = this.props.intl;
+        return (
+            <form onSubmit={this.handleSubmit}>
+                <div className='signup__email-container'>
+                    <div className={'form-group' + errorClass}>
+                        {serverError}
+                    </div>
+                    <div className={'form-group' + errorClass}>
+                        <input
+                            autoFocus={true}
+                            className='form-control'
+                            ref='id'
+                            placeholder={formatMessage(holders.username)}
+                            spellCheck='false'
+                        />
+                    </div>
+                    <div className={'form-group' + errorClass}>
+                        <input
+                            type='password'
+                            className='form-control'
+                            ref='password'
+                            placeholder={formatMessage(holders.pwd)}
+                            spellCheck='false'
+                        />
+                    </div>
+                    <div className='form-group'>
+                        <button
+                            type='submit'
+                            className='btn btn-primary'
+                        >
+                            <FormattedMessage
+                                id='login_ldap.signin'
+                                defaultMessage='Sign in'
+                            />
+                        </button>
+                    </div>
+                </div>
+            </form>
+        );
+    }
+}
+LoginLdap.defaultProps = {
+};
+
+LoginLdap.propTypes = {
+    intl: intlShape.isRequired,
+    teamName: React.PropTypes.string.isRequired
+};
+
+export default injectIntl(LoginLdap);
\ No newline at end of file
-- 
cgit v1.2.3-1-g7c22

