All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.18.18.a37bd6c43e2b13149f99.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
{"version":3,"sources":["webpack:///18.18.a37bd6c43e2b13149f99.js","webpack:///./src/components/ldap/LdapComponent.jsx","webpack:///./src/components/ldap/LdapGroupsComponent.jsx","webpack:///./src/components/ldap/TestLdapConnection.jsx","webpack:///./src/components/ldap/TestLdapLogin.jsx","webpack:///./src/components/ldap/TestLdapLogin.css","webpack:///./src/components/ldap/TestLdapLogin.css?3ec1","webpack:///./src/components/authentication/AccessTokenConfig.js","webpack:///./src/components/authentication/AuthProvidersConfig.jsx","webpack:///./src/components/authentication/AuthenticationComponent.jsx","webpack:///./src/components/authentication/LegacyLdapConfig.js","webpack:///./src/components/authentication/MongoDbPasswordConfig.jsx","webpack:///./src/components/authentication/MongoDbSessionConfig.js","webpack:///./src/components/authentication/RootUserConfig.js","webpack:///./src/components/authentication/index.js","webpack:///./src/pages/AuthenticationPage.jsx","webpack:///./src/components/authentication/AuthenticationComponent.css","webpack:///./src/components/authentication/AuthenticationComponent.css?2d97"],"names":["webpackJsonp","292","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_typeof","Symbol","iterator","constructor","prototype","_react","_react2","_reflux","_reflux2","_reactBootstrap","_reactRouterBootstrap","_urijs","_urijs2","_javascriptNaturalSort","_javascriptNaturalSort2","_common","_ObjectUtils","_ObjectUtils2","_Routes","_Routes2","_TestLdapConnection","_TestLdapConnection2","_TestLdapLogin","_TestLdapLogin2","_StoreProvider","_StoreProvider2","_ActionsProvider","_ActionsProvider2","RolesStore","getStore","LdapStore","LdapActions","getActions","HelperText","activeDirectory","SYSTEM_USERNAME","createElement","SYSTEM_PASSWORD","SEARCH_BASE","SEARCH_PATTERN","className","DISPLAY_NAME","GROUP_SEARCH_BASE","GROUP_PATTERN","GROUP_ID","DEFAULT_GROUP","LinkContainer","to","SYSTEM","LDAP","GROUPS","ADDITIONAL_GROUPS","ldap","LdapComponent","createClass","displayName","mixins","listenTo","propTypes","onCancel","PropTypes","func","isRequired","getInitialState","ldapSettings","undefined","ldapUri","roles","componentDidMount","_this","this","loadRoles","then","setState","_formatAdditionalRoles","filter","r","name","toLowerCase","sort","r1","r2","map","label","_onLdapSettingsChange","state","settings","clone","ldap_uri","_isLoading","_bindChecked","ev","_setSetting","target","checked","_bindValue","_updateSsl","_setUriScheme","attribute","newState","formattedValue","toString","serverConnectionStatus","scheme","_uriScheme","_setUriHost","host","hostname","_uriHost","_setUriPort","port","_uriPort","_setAdditionalDefaultGroups","rolesString","split","v","_saveSettings","event","preventDefault","update","render","_this2","Spinner","isAD","active_directory","disabled","enabled","help","rolesOptions","Row","Col","lg","id","onSubmit","Input","type","wrapperClassName","onChange","labelClassName","placeholder","required","min","max","style","width","use_start_tls","trust_all_certificates","system_username","system_password","search_base","search_pattern","display_name_attribute","group_search_base","group_search_pattern","group_id_attribute","sm","default_group","smOffset","Panel","bsStyle","MultiSelect","ref","options","additional_default_groups","Button","onClick","props","293","_immutable","_immutable2","LdapGroupsActions","LdapGroupsComponent","groups","Set","of","mapping","Map","groupsErrorMessage","loadMapping","triggerPromise","loadGroups","error","_updateMapping","role","group","getAttribute","set","_saveMapping","saveMapping","toJS","header","insensitive","key","content","data-group","get","size","SETTINGS","md","padding","mdPush","294","TestLdapConnection","object","bool","componentWillReceiveProps","nextProps","JSON","stringify","_testServerConnection","testServerConnection","result","connected","loading","success","exception","_getServerConnectionStyle","isDisabled","serverConnectionResult","Alert","295","TestLdapLogin","loginUser","loginPassword","loginStatus","use","componentWillUnmount","unuse","_changeLoginForm","_disableSubmitOnEnter","_testLogin","testLogin","login_authenticated","isEmpty","entry","_loginTestButtonStyle","_formatLoginStatus","title","userFound","loginCheck","serverResponse","attributes","keys","formattedEntry","length","formattedGroups","loginDisabled","onKeyPress","testLoginPassword","369","push","505","dispose","refs","locals","unref","673","AccessTokenConfig","config","PageHeader","subpage","674","_BootstrapModalForm","_BootstrapModalForm2","AuthProvidersConfig","descriptors","updateConfig","history","getDefaultProps","disabled_realms","realm_order","_openModal","configModal","open","_closeModal","close","_saveConfig","_hasNoActiveRealm","_resetConfig","_onCancel","pushState","AUTHENTICATION","OVERVIEW","_updateSorting","newSorting","_toggleStatus","realmName","disabledProcessors","p","indexOf","_noActiveRealmWarning","_summary","_this3","idx","status","disabledName","realm","description","_sortableItems","_this4","_statusForm","_this5","a","b","canBeDisabled","Table","striped","bordered","IfPermitted","permissions","onSubmitForm","onModalClose","submitButtonText","SortableList","items","onMoveItem","condensed","675","_plugin","_PermissionsMixin","_PermissionsMixin2","_AuthProvidersConfig","_AuthProvidersConfig2","_AuthenticationComponent","_AuthenticationComponent2","AuthenticationActions","AuthenticationStore","CurrentUserStore","AuthenticationComponent","location","params","children","element","connect","load","PluginStore","forEach","authConfig","authenticatorConfigurations","_pluginPane","auth","component","_onUpdateProviders","_contentComponent","authenticators","auths","isPermitted","currentUser","numberedTitle","PROVIDERS","provider","NavItem","unshift","divider","CONFIG","ROLES","USERS","LIST","edit","username","subnavigation","Nav","stacked","contentComponent","Children","count","only","contentpane","676","_LdapComponent","_LdapComponent2","_LdapGroupsComponent","_LdapGroupsComponent2","_CombinedProvider","_CombinedProvider2","_CombinedProvider$get","LegacyLdapConfig","showSettings","loadSettings","_toggleButton","_onSettingsCancel","toggleButtonText","activeComponent","677","MongoDbPasswordConfig","678","MongoDbSessionConfig","679","RootUserConfig","680","_MongoDbPasswordConfig","_MongoDbPasswordConfig2","_MongoDbSessionConfig","_MongoDbSessionConfig2","_LegacyLdapConfig","_LegacyLdapConfig2","_RootUserConfig","_RootUserConfig2","_AccessTokenConfig","_AccessTokenConfig2","register","PluginManifest","847","_DocsHelper","_DocsHelper2","_PageHeader","_PageHeader2","_DocumentationLink","_DocumentationLink2","AuthenticationPage","page","PAGES","USERS_ROLES","text","1149","1261"],"mappings":"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","file":"18.18.a37bd6c43e2b13149f99.js","sourcesContent":["webpackJsonp([18],{\n\n/***/ 292:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reflux = __webpack_require__(4);\n\t\n\tvar _reflux2 = _interopRequireDefault(_reflux);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _reactRouterBootstrap = __webpack_require__(18);\n\t\n\tvar _urijs = __webpack_require__(65);\n\t\n\tvar _urijs2 = _interopRequireDefault(_urijs);\n\t\n\tvar _javascriptNaturalSort = __webpack_require__(48);\n\t\n\tvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tvar _ObjectUtils = __webpack_require__(47);\n\t\n\tvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\t\n\tvar _Routes = __webpack_require__(11);\n\t\n\tvar _Routes2 = _interopRequireDefault(_Routes);\n\t\n\tvar _TestLdapConnection = __webpack_require__(294);\n\t\n\tvar _TestLdapConnection2 = _interopRequireDefault(_TestLdapConnection);\n\t\n\tvar _TestLdapLogin = __webpack_require__(295);\n\t\n\tvar _TestLdapLogin2 = _interopRequireDefault(_TestLdapLogin);\n\t\n\tvar _StoreProvider = __webpack_require__(3);\n\t\n\tvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\t\n\tvar _ActionsProvider = __webpack_require__(6);\n\t\n\tvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar RolesStore = _StoreProvider2.default.getStore('Roles');\n\tvar LdapStore = _StoreProvider2.default.getStore('Ldap');\n\t\n\tvar LdapActions = _ActionsProvider2.default.getActions('Ldap');\n\t\n\tvar HelperText = {\n\t  activeDirectory: {\n\t    SYSTEM_USERNAME: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The username for the initial connection to the Active Directory server, e.g. ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        '[email protected]'\n\t      ),\n\t      '.',\n\t      _react2.default.createElement('br', null),\n\t      'This needs to match the ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'userPrincipalName'\n\t      ),\n\t      ' of that user.'\n\t    ),\n\t    SYSTEM_PASSWORD: 'The password for the initial connection to the Active Directory server.',\n\t    SEARCH_BASE: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The base tree to limit the Active Directory search query to, e.g. ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'cn=users,dc=example,dc=com'\n\t      ),\n\t      '.'\n\t    ),\n\t    SEARCH_PATTERN: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'For example ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        { className: 'text-nowrap' },\n\t        '(&(objectClass=user)(sAMAccountName={0}))'\n\t      ),\n\t      '.',\n\t      ' ',\n\t      'The string ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        '{0}'\n\t      ),\n\t      ' will be replaced by the entered username.'\n\t    ),\n\t    DISPLAY_NAME: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'Which Active Directory attribute to use for the full name of the user in Graylog, e.g. ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'displayName'\n\t      ),\n\t      '.',\n\t      _react2.default.createElement('br', null),\n\t      'Try to load a test user using the form below, if you are unsure which attribute to use.'\n\t    ),\n\t    GROUP_SEARCH_BASE: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The base tree to limit the Active Directory group search query to, e.g. ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'cn=users,dc=example,dc=com'\n\t      ),\n\t      '.'\n\t    ),\n\t    GROUP_PATTERN: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The search pattern used to find groups in Active Directory for mapping to Graylog roles, e.g.',\n\t      ' ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        { className: 'text-nowrap' },\n\t        '(objectClass=group)'\n\t      ),\n\t      ' or',\n\t      ' ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        { className: 'text-nowrap' },\n\t        '(&(objectClass=group)(cn=graylog*))'\n\t      ),\n\t      '.'\n\t    ),\n\t    GROUP_ID: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'Which Active Directory attribute to use for the full name of the group, usually ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'cn'\n\t      ),\n\t      '.'\n\t    ),\n\t    DEFAULT_GROUP: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The default Graylog role determines whether a user created via Active Directory can access the entire system, or has limited access.',\n\t      _react2.default.createElement('br', null),\n\t      'You can assign additional permissions by',\n\t      ' ',\n\t      _react2.default.createElement(\n\t        _reactRouterBootstrap.LinkContainer,\n\t        { to: _Routes2.default.SYSTEM.LDAP.GROUPS },\n\t        _react2.default.createElement(\n\t          'a',\n\t          null,\n\t          'mapping Active Directory groups to Graylog roles'\n\t        )\n\t      ),\n\t      ',',\n\t      ' ',\n\t      'or you can assign additional Graylog roles to Active Directory users below.'\n\t    ),\n\t    ADDITIONAL_GROUPS: 'Choose the additional roles each Active Directory user will have by default, leave it empty if you want to map Active Directory groups to Graylog roles.'\n\t  },\n\t\n\t  ldap: {\n\t    SYSTEM_USERNAME: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The username for the initial connection to the LDAP server, e.g.',\n\t      ' ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        { className: 'text-nowrap' },\n\t        'uid=admin,ou=system'\n\t      ),\n\t      ', this might be optional depending on your LDAP server.'\n\t    ),\n\t    SYSTEM_PASSWORD: 'The password for the initial connection to the LDAP server.',\n\t    SEARCH_BASE: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The base tree to limit the LDAP search query to, e.g. ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        {\n\t          className: 'text-nowrap' },\n\t        'cn=users,dc=example,dc=com'\n\t      ),\n\t      '.'\n\t    ),\n\t    SEARCH_PATTERN: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'For example ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        { className: 'text-nowrap' },\n\t        '(&(objectClass=inetOrgPerson)(uid={0}))'\n\t      ),\n\t      '.',\n\t      ' ',\n\t      'The string ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        '{0}'\n\t      ),\n\t      ' will be replaced by the entered username.'\n\t    ),\n\t    DISPLAY_NAME: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'Which LDAP attribute to use for the full name of the user in Graylog, e.g. ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'cn'\n\t      ),\n\t      '.',\n\t      _react2.default.createElement('br', null),\n\t      'Try to load a test user using the form below, if you are unsure which attribute to use.'\n\t    ),\n\t    GROUP_SEARCH_BASE: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The base tree to limit the LDAP group search query to, e.g. ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'cn=users,dc=example,dc=com'\n\t      ),\n\t      '.'\n\t    ),\n\t    GROUP_PATTERN: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The search pattern used to find groups in LDAP for mapping to Graylog roles, e.g.',\n\t      ' ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        '(objectClass=groupOfNames)'\n\t      ),\n\t      ' or',\n\t      ' ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        { className: 'text-nowrap' },\n\t        '(&(objectClass=groupOfNames)(cn=graylog*))'\n\t      ),\n\t      '.'\n\t    ),\n\t    GROUP_ID: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'Which LDAP attribute to use for the full name of the group, usually ',\n\t      _react2.default.createElement(\n\t        'code',\n\t        null,\n\t        'cn'\n\t      ),\n\t      '.'\n\t    ),\n\t    DEFAULT_GROUP: _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      'The default Graylog role determines whether a user created via LDAP can access the entire system, or has limited access.',\n\t      _react2.default.createElement('br', null),\n\t      'You can assign additional permissions by',\n\t      ' ',\n\t      _react2.default.createElement(\n\t        _reactRouterBootstrap.LinkContainer,\n\t        { to: _Routes2.default.SYSTEM.LDAP.GROUPS },\n\t        _react2.default.createElement(\n\t          'a',\n\t          null,\n\t          'mapping LDAP groups to Graylog roles'\n\t        )\n\t      ),\n\t      ',',\n\t      ' ',\n\t      'or you can assign additional Graylog roles to LDAP users below.'\n\t    ),\n\t    ADDITIONAL_GROUPS: 'Choose the additional roles each LDAP user will have by default, leave it empty if you want to map LDAP groups to Graylog roles.'\n\t  }\n\t};\n\t\n\tvar LdapComponent = _react2.default.createClass({\n\t  displayName: 'LdapComponent',\n\t\n\t  mixins: [_reflux2.default.listenTo(LdapStore, '_onLdapSettingsChange', '_onLdapSettingsChange')],\n\t\n\t  propTypes: {\n\t    onCancel: _react2.default.PropTypes.func.isRequired\n\t  },\n\t\n\t  getInitialState: function getInitialState() {\n\t    return {\n\t      ldapSettings: undefined,\n\t      ldapUri: undefined,\n\t      roles: undefined\n\t    };\n\t  },\n\t  componentDidMount: function componentDidMount() {\n\t    var _this = this;\n\t\n\t    RolesStore.loadRoles().then(function (roles) {\n\t      _this.setState({ roles: _this._formatAdditionalRoles(roles) });\n\t    });\n\t  },\n\t  _formatAdditionalRoles: function _formatAdditionalRoles(roles) {\n\t    return roles.filter(function (r) {\n\t      return !(r.name.toLowerCase() === 'reader' || r.name.toLowerCase() === 'admin');\n\t    }).sort(function (r1, r2) {\n\t      return (0, _javascriptNaturalSort2.default)(r1.name.toLowerCase(), r2.name.toLowerCase());\n\t    }).map(function (r) {\n\t      return { label: r.name, value: r.name };\n\t    });\n\t  },\n\t  _onLdapSettingsChange: function _onLdapSettingsChange(state) {\n\t    if (!state.ldapSettings) {\n\t      return;\n\t    }\n\t\n\t    // Clone settings object, so we don't the store reference\n\t    var settings = _ObjectUtils2.default.clone(state.ldapSettings);\n\t    var ldapUri = new _urijs2.default(settings.ldap_uri);\n\t    this.setState({ ldapSettings: settings, ldapUri: ldapUri });\n\t  },\n\t  _isLoading: function _isLoading() {\n\t    return !this.state.ldapSettings || !this.state.roles;\n\t  },\n\t  _bindChecked: function _bindChecked(ev, value) {\n\t    this._setSetting(ev.target.name, typeof value === 'undefined' ? ev.target.checked : value);\n\t  },\n\t  _bindValue: function _bindValue(ev) {\n\t    this._setSetting(ev.target.name, ev.target.value);\n\t  },\n\t  _updateSsl: function _updateSsl(ev) {\n\t    this._setUriScheme(ev.target.checked ? 'ldaps' : 'ldap');\n\t  },\n\t  _setSetting: function _setSetting(attribute, value) {\n\t    var newState = {};\n\t\n\t    var formattedValue = value;\n\t    // Convert URI object into string to store it in the state\n\t    if (attribute === 'ldap_uri' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n\t      newState.ldapUri = value;\n\t      formattedValue = value.toString();\n\t    }\n\t\n\t    // Clone state to not modify it directly\n\t    var settings = _ObjectUtils2.default.clone(this.state.ldapSettings);\n\t    settings[attribute] = formattedValue;\n\t    newState.ldapSettings = settings;\n\t    newState.serverConnectionStatus = {};\n\t    this.setState(newState);\n\t  },\n\t  _setUriScheme: function _setUriScheme(scheme) {\n\t    var ldapUri = this.state.ldapUri.clone();\n\t    ldapUri.scheme(scheme);\n\t    this._setSetting('ldap_uri', ldapUri);\n\t  },\n\t  _uriScheme: function _uriScheme() {\n\t    return this.state.ldapUri.scheme() + '://';\n\t  },\n\t  _setUriHost: function _setUriHost(host) {\n\t    var ldapUri = this.state.ldapUri.clone();\n\t    ldapUri.hostname(host);\n\t    this._setSetting('ldap_uri', ldapUri);\n\t  },\n\t  _uriHost: function _uriHost() {\n\t    return this.state.ldapUri.hostname();\n\t  },\n\t  _setUriPort: function _setUriPort(port) {\n\t    var ldapUri = this.state.ldapUri.clone();\n\t    ldapUri.port(port);\n\t    this._setSetting('ldap_uri', ldapUri);\n\t  },\n\t  _uriPort: function _uriPort() {\n\t    return this.state.ldapUri.port();\n\t  },\n\t  _setAdditionalDefaultGroups: function _setAdditionalDefaultGroups(rolesString) {\n\t    // only keep non-empty entries\n\t    var roles = rolesString.split(',').filter(function (v) {\n\t      return v !== '';\n\t    });\n\t    this._setSetting('additional_default_groups', roles);\n\t  },\n\t  _saveSettings: function _saveSettings(event) {\n\t    event.preventDefault();\n\t    LdapActions.update(this.state.ldapSettings);\n\t  },\n\t  render: function render() {\n\t    var _this2 = this;\n\t\n\t    if (this._isLoading()) {\n\t      return _react2.default.createElement(_common.Spinner, null);\n\t    }\n\t\n\t    var isAD = this.state.ldapSettings.active_directory;\n\t    var disabled = !this.state.ldapSettings.enabled;\n\t    var help = isAD ? HelperText.activeDirectory : HelperText.ldap;\n\t\n\t    var rolesOptions = this.state.roles;\n\t\n\t    return _react2.default.createElement(\n\t      _reactBootstrap.Row,\n\t      null,\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Col,\n\t        { lg: 8 },\n\t        _react2.default.createElement(\n\t          'form',\n\t          { id: 'ldap-settings-form', className: 'form-horizontal', onSubmit: this._saveSettings },\n\t          _react2.default.createElement(_reactBootstrap.Input, { type: 'checkbox', label: 'Enable LDAP',\n\t            help: 'User accounts will be taken from LDAP/Active Directory, the administrator account will still be available.',\n\t            wrapperClassName: 'col-sm-offset-3 col-sm-9',\n\t            name: 'enabled',\n\t            checked: this.state.ldapSettings.enabled,\n\t            onChange: this._bindChecked }),\n\t          _react2.default.createElement(\n\t            'fieldset',\n\t            null,\n\t            _react2.default.createElement(\n\t              'legend',\n\t              { className: 'col-sm-12' },\n\t              '1. Server configuration'\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Input,\n\t              { id: 'active_directory', labelClassName: 'col-sm-3',\n\t                wrapperClassName: 'col-sm-9', label: 'Server Type' },\n\t              _react2.default.createElement(\n\t                'label',\n\t                { className: 'radio-inline' },\n\t                _react2.default.createElement('input', { type: 'radio', name: 'active_directory',\n\t                  checked: !isAD, disabled: disabled,\n\t                  onChange: function onChange(ev) {\n\t                    return _this2._bindChecked(ev, false);\n\t                  } }),\n\t                'LDAP'\n\t              ),\n\t              _react2.default.createElement(\n\t                'label',\n\t                { className: 'radio-inline' },\n\t                _react2.default.createElement('input', { type: 'radio', name: 'active_directory',\n\t                  checked: isAD, disabled: disabled,\n\t                  onChange: function onChange(ev) {\n\t                    return _this2._bindChecked(ev, true);\n\t                  } }),\n\t                'Active Directory'\n\t              )\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Input,\n\t              { id: 'ldap-uri-host', labelClassName: 'col-sm-3',\n\t                wrapperClassName: 'col-sm-9', label: 'Server Address' },\n\t              _react2.default.createElement(\n\t                'div',\n\t                { className: 'input-group' },\n\t                _react2.default.createElement(\n\t                  'span',\n\t                  { className: 'input-group-addon' },\n\t                  this._uriScheme()\n\t                ),\n\t                _react2.default.createElement('input', { type: 'text', className: 'form-control', id: 'ldap-uri-host', value: this._uriHost(),\n\t                  placeholder: 'Hostname', required: true, onChange: function onChange(ev) {\n\t                    return _this2._setUriHost(ev.target.value);\n\t                  },\n\t                  disabled: disabled }),\n\t                _react2.default.createElement(\n\t                  'span',\n\t                  { className: 'input-group-addon input-group-separator' },\n\t                  ':'\n\t                ),\n\t                _react2.default.createElement('input', { type: 'number', className: 'form-control', id: 'ldap-uri-port', value: this._uriPort(), min: '1',\n\t                  max: '65535', placeholder: 'Port',\n\t                  required: true, style: { width: 120 }, onChange: function onChange(ev) {\n\t                    return _this2._setUriPort(ev.target.value);\n\t                  },\n\t                  disabled: disabled })\n\t              ),\n\t              _react2.default.createElement(\n\t                'label',\n\t                { className: 'checkbox-inline' },\n\t                _react2.default.createElement('input', { type: 'checkbox', name: 'ssl', checked: this.state.ldapUri.scheme() === 'ldaps',\n\t                  onChange: this._updateSsl,\n\t                  disabled: disabled }),\n\t                ' SSL'\n\t              ),\n\t              _react2.default.createElement(\n\t                'label',\n\t                { className: 'checkbox-inline' },\n\t                _react2.default.createElement('input', { type: 'checkbox', name: 'use_start_tls', value: 'true', id: 'ldap-uri-starttls',\n\t                  checked: this.state.ldapSettings.use_start_tls, onChange: this._bindChecked,\n\t                  disabled: disabled }),\n\t                ' StartTLS'\n\t              ),\n\t              _react2.default.createElement(\n\t                'label',\n\t                { className: 'checkbox-inline' },\n\t                _react2.default.createElement('input', { type: 'checkbox', name: 'trust_all_certificates', value: 'true', id: 'trust-all-certificates',\n\t                  checked: this.state.ldapSettings.trust_all_certificates, onChange: this._bindChecked,\n\t                  disabled: disabled }),\n\t                ' Allow self-signed certificates'\n\t              )\n\t            ),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'text', id: 'system_username', name: 'system_username', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'System User DN', label: 'System Username',\n\t              value: this.state.ldapSettings.system_username, help: help.SYSTEM_USERNAME,\n\t              onChange: this._bindValue, disabled: disabled }),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'password', id: 'system_password', name: 'system_password', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'System Password', label: 'System Password',\n\t              value: this.state.ldapSettings.system_password, help: help.SYSTEM_PASSWORD,\n\t              onChange: this._bindValue, disabled: disabled })\n\t          ),\n\t          _react2.default.createElement(\n\t            'fieldset',\n\t            null,\n\t            _react2.default.createElement(\n\t              'legend',\n\t              { className: 'col-sm-12' },\n\t              '2. Connection Test'\n\t            ),\n\t            _react2.default.createElement(_TestLdapConnection2.default, { ldapSettings: this.state.ldapSettings, ldapUri: this.state.ldapUri, disabled: disabled })\n\t          ),\n\t          _react2.default.createElement(\n\t            'fieldset',\n\t            null,\n\t            _react2.default.createElement(\n\t              'legend',\n\t              { className: 'col-sm-12' },\n\t              '3. User mapping'\n\t            ),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'text', id: 'search_base', name: 'search_base', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'Search Base', label: 'Search Base DN',\n\t              value: this.state.ldapSettings.search_base, help: help.SEARCH_BASE,\n\t              onChange: this._bindValue, disabled: disabled, required: true }),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'text', id: 'search_pattern', name: 'search_pattern', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'Search Pattern', label: 'User Search Pattern',\n\t              value: this.state.ldapSettings.search_pattern, help: help.SEARCH_PATTERN,\n\t              onChange: this._bindValue, disabled: disabled, required: true }),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'text', id: 'display_name_attribute', name: 'display_name_attribute', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'Display Name Attribute', label: 'Display Name attribute',\n\t              value: this.state.ldapSettings.display_name_attribute, help: help.DISPLAY_NAME,\n\t              onChange: this._bindValue, disabled: disabled, required: true })\n\t          ),\n\t          _react2.default.createElement(\n\t            'fieldset',\n\t            null,\n\t            _react2.default.createElement(\n\t              'legend',\n\t              { className: 'col-sm-12' },\n\t              '4. Group Mapping',\n\t              _react2.default.createElement(\n\t                'small',\n\t                null,\n\t                '(optional)'\n\t              )\n\t            ),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'text', id: 'group_search_base', name: 'group_search_base', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'Group Search Base', label: 'Group Search Base DN',\n\t              value: this.state.ldapSettings.group_search_base, help: help.GROUP_SEARCH_BASE,\n\t              onChange: this._bindValue, disabled: disabled }),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'text', id: 'group_search_pattern', name: 'group_search_pattern', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'Group Search Pattern', label: 'Group Search Pattern',\n\t              value: this.state.ldapSettings.group_search_pattern, help: help.GROUP_PATTERN,\n\t              onChange: this._bindValue, disabled: disabled }),\n\t            _react2.default.createElement(_reactBootstrap.Input, { type: 'text', id: 'group_id_attribute', name: 'group_id_attribute', labelClassName: 'col-sm-3',\n\t              wrapperClassName: 'col-sm-9', placeholder: 'Group Id Attribute', label: 'Group Name Attribute',\n\t              value: this.state.ldapSettings.group_id_attribute, help: help.GROUP_ID,\n\t              onChange: this._bindValue, disabled: disabled }),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Input,\n\t              { id: 'default_group', labelClassName: 'col-sm-3',\n\t                wrapperClassName: 'col-sm-9', label: 'Default User Role',\n\t                help: help.DEFAULT_GROUP },\n\t              _react2.default.createElement(\n\t                _reactBootstrap.Row,\n\t                null,\n\t                _react2.default.createElement(\n\t                  _reactBootstrap.Col,\n\t                  { sm: 4 },\n\t                  _react2.default.createElement(\n\t                    'select',\n\t                    { id: 'default_group', name: 'default_group', className: 'form-control', required: true,\n\t                      value: this.state.ldapSettings.default_group.toLowerCase(), disabled: disabled,\n\t                      onChange: function onChange(ev) {\n\t                        return _this2._setSetting('default_group', ev.target.value);\n\t                      } },\n\t                    _react2.default.createElement(\n\t                      'option',\n\t                      { value: 'reader' },\n\t                      'Reader - basic access'\n\t                    ),\n\t                    _react2.default.createElement(\n\t                      'option',\n\t                      { value: 'admin' },\n\t                      'Administrator - complete access'\n\t                    )\n\t                  )\n\t                )\n\t              )\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Row,\n\t              null,\n\t              _react2.default.createElement(\n\t                _reactBootstrap.Col,\n\t                { sm: 9, smOffset: 3 },\n\t                _react2.default.createElement(\n\t                  _reactBootstrap.Panel,\n\t                  { bsStyle: 'info' },\n\t                  'Changing the static role assignment will only affect to new users created via LDAP/Active Directory!',\n\t                  _react2.default.createElement('br', null),\n\t                  'Existing user accounts will be updated on their next login, or if you edit their roles manually.'\n\t                )\n\t              )\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Input,\n\t              { id: 'additional_default_groups', labelClassName: 'col-sm-3',\n\t                wrapperClassName: 'col-sm-9', label: 'Additional Default Roles',\n\t                help: help.ADDITIONAL_GROUPS },\n\t              _react2.default.createElement(_common.MultiSelect, {\n\t                ref: 'select',\n\t                options: rolesOptions,\n\t                disabled: disabled,\n\t                value: this.state.ldapSettings.additional_default_groups,\n\t                onChange: function onChange(roles) {\n\t                  return _this2._setAdditionalDefaultGroups(roles);\n\t                },\n\t                placeholder: 'Choose additional roles...'\n\t              })\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Row,\n\t              null,\n\t              _react2.default.createElement(\n\t                _reactBootstrap.Col,\n\t                { sm: 9, smOffset: 3 },\n\t                _react2.default.createElement(\n\t                  _reactBootstrap.Panel,\n\t                  { bsStyle: 'info' },\n\t                  'Changing the static role assignment will only affect to new users created via LDAP/Active Directory!',\n\t                  _react2.default.createElement('br', null),\n\t                  'Existing user accounts will be updated on their next login, or if you edit their roles manually.'\n\t                )\n\t              )\n\t            )\n\t          ),\n\t          _react2.default.createElement(\n\t            'fieldset',\n\t            null,\n\t            _react2.default.createElement(\n\t              'legend',\n\t              { className: 'col-sm-12' },\n\t              '5. Login test'\n\t            ),\n\t            _react2.default.createElement(_TestLdapLogin2.default, { ldapSettings: this.state.ldapSettings, disabled: disabled })\n\t          ),\n\t          _react2.default.createElement(\n\t            'fieldset',\n\t            null,\n\t            _react2.default.createElement(\n\t              'legend',\n\t              { className: 'col-sm-12' },\n\t              '6. Store settings'\n\t            ),\n\t            _react2.default.createElement(\n\t              'div',\n\t              { className: 'form-group' },\n\t              _react2.default.createElement(\n\t                _reactBootstrap.Col,\n\t                { sm: 9, smOffset: 3 },\n\t                _react2.default.createElement(\n\t                  _reactBootstrap.Button,\n\t                  { type: 'submit', bsStyle: 'primary', className: 'save-button-margin' },\n\t                  'Save LDAP settings'\n\t                ),\n\t                _react2.default.createElement(\n\t                  _reactBootstrap.Button,\n\t                  { onClick: this.props.onCancel },\n\t                  'Cancel'\n\t                )\n\t              )\n\t            )\n\t          )\n\t        )\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = LdapComponent;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 293:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _immutable = __webpack_require__(23);\n\t\n\tvar _immutable2 = _interopRequireDefault(_immutable);\n\t\n\tvar _reactRouterBootstrap = __webpack_require__(18);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _javascriptNaturalSort = __webpack_require__(48);\n\t\n\tvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tvar _Routes = __webpack_require__(11);\n\t\n\tvar _Routes2 = _interopRequireDefault(_Routes);\n\t\n\tvar _ActionsProvider = __webpack_require__(6);\n\t\n\tvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\t\n\tvar _StoreProvider = __webpack_require__(3);\n\t\n\tvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LdapGroupsActions = _ActionsProvider2.default.getActions('LdapGroups');\n\t\n\tvar RolesStore = _StoreProvider2.default.getStore('Roles');\n\tvar LdapGroupsStore = _StoreProvider2.default.getStore('LdapGroups');\n\t\n\tvar LdapGroupsComponent = _react2.default.createClass({\n\t  displayName: 'LdapGroupsComponent',\n\t\n\t  propTypes: {\n\t    onCancel: _react2.default.PropTypes.func.isRequired\n\t  },\n\t\n\t  getInitialState: function getInitialState() {\n\t    return {\n\t      groups: _immutable2.default.Set.of(),\n\t      roles: _immutable2.default.Set.of(),\n\t      mapping: _immutable2.default.Map(),\n\t      groupsErrorMessage: null\n\t    };\n\t  },\n\t  componentDidMount: function componentDidMount() {\n\t    var _this = this;\n\t\n\t    LdapGroupsActions.loadMapping.triggerPromise().then(function (mapping) {\n\t      return _this.setState({ mapping: _immutable2.default.Map(mapping) });\n\t    });\n\t    LdapGroupsActions.loadGroups.triggerPromise().then(function (groups) {\n\t      return _this.setState({ groups: _immutable2.default.Set(groups) });\n\t    }, function (error) {\n\t      return _this.setState({ groupsErrorMessage: error });\n\t    });\n\t    RolesStore.loadRoles().then(function (roles) {\n\t      return _this.setState({ roles: _immutable2.default.Set(roles) });\n\t    });\n\t  },\n\t  _updateMapping: function _updateMapping(event) {\n\t    var role = event.target.value;\n\t    var group = event.target.getAttribute('data-group');\n\t    if (role === '') {\n\t      this.setState({ mapping: this.state.mapping.delete(group) });\n\t    } else {\n\t      this.setState({ mapping: this.state.mapping.set(group, role) });\n\t    }\n\t  },\n\t  _saveMapping: function _saveMapping(event) {\n\t    event.preventDefault();\n\t    LdapGroupsActions.saveMapping(this.state.mapping.toJS());\n\t  },\n\t  _isLoading: function _isLoading() {\n\t    return !(this.state.mapping && this.state.groups && this.state.roles);\n\t  },\n\t  render: function render() {\n\t    var _this2 = this;\n\t\n\t    if (this._isLoading()) {\n\t      return _react2.default.createElement(_common.Spinner, null);\n\t    }\n\t\n\t    if (this.state.groupsErrorMessage !== null) {\n\t      return _react2.default.createElement(\n\t        _reactBootstrap.Panel,\n\t        { header: 'Error: Unable to load LDAP groups', bsStyle: 'danger' },\n\t        'The error message was:',\n\t        _react2.default.createElement('br', null),\n\t        this.state.groupsErrorMessage\n\t      );\n\t    }\n\t\n\t    _javascriptNaturalSort2.default.insensitive = true; // sigh\n\t\n\t    var options = this.state.roles.sort(_javascriptNaturalSort2.default).map(function (role) {\n\t      return _react2.default.createElement(\n\t        'option',\n\t        { key: role.name, value: role.name },\n\t        role.name\n\t      );\n\t    });\n\t\n\t    var content = this.state.groups.sort(_javascriptNaturalSort2.default).map(function (group) {\n\t      return _react2.default.createElement(\n\t        'li',\n\t        { key: group },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Input,\n\t          { label: group, 'data-group': group, type: 'select', value: _this2.state.mapping.get(group, ''),\n\t            onChange: _this2._updateMapping, labelClassName: 'col-sm-2', wrapperClassName: 'col-sm-5' },\n\t          _react2.default.createElement(\n\t            'option',\n\t            { value: '' },\n\t            'None'\n\t          ),\n\t          options\n\t        )\n\t      );\n\t    });\n\t\n\t    _javascriptNaturalSort2.default.insensitive = false; // sigh 2\n\t\n\t    if (content.size === 0) {\n\t      return _react2.default.createElement(\n\t        'p',\n\t        null,\n\t        'No LDAP/Active Directory groups found. Please verify that your',\n\t        ' ',\n\t        _react2.default.createElement(\n\t          _reactRouterBootstrap.LinkContainer,\n\t          { to: _Routes2.default.SYSTEM.LDAP.SETTINGS },\n\t          _react2.default.createElement(\n\t            'a',\n\t            null,\n\t            'LDAP group mapping'\n\t          )\n\t        ),\n\t        ' ',\n\t        'settings are correct.'\n\t      );\n\t    } else {\n\t      return _react2.default.createElement(\n\t        'form',\n\t        { className: 'form-horizontal', onSubmit: this._saveMapping },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Row,\n\t          null,\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Col,\n\t            { md: 12 },\n\t            _react2.default.createElement(\n\t              'ul',\n\t              { style: { padding: 0 } },\n\t              content\n\t            )\n\t          ),\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Col,\n\t            { md: 10, mdPush: 2 },\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Button,\n\t              { type: 'submit', bsStyle: 'primary', className: 'save-button-margin' },\n\t              'Save'\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Button,\n\t              { onClick: this.props.onCancel },\n\t              'Cancel'\n\t            )\n\t          )\n\t        )\n\t      );\n\t    }\n\t  }\n\t});\n\t\n\texports.default = LdapGroupsComponent;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 294:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _ActionsProvider = __webpack_require__(6);\n\t\n\tvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LdapActions = _ActionsProvider2.default.getActions('Ldap');\n\t\n\tvar TestLdapConnection = _react2.default.createClass({\n\t  displayName: 'TestLdapConnection',\n\t\n\t  propTypes: {\n\t    ldapSettings: _react.PropTypes.object.isRequired,\n\t    ldapUri: _react.PropTypes.object.isRequired,\n\t    disabled: _react.PropTypes.bool\n\t  },\n\t\n\t  getInitialState: function getInitialState() {\n\t    return {\n\t      serverConnectionStatus: {}\n\t    };\n\t  },\n\t  componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t    // Reset connection status if ldapSettings changed\n\t    if (JSON.stringify(this.props.ldapSettings) !== JSON.stringify(nextProps.ldapSettings)) {\n\t      this.setState({ serverConnectionStatus: {} });\n\t    }\n\t  },\n\t  _testServerConnection: function _testServerConnection() {\n\t    var _this = this;\n\t\n\t    LdapActions.testServerConnection.triggerPromise(this.props.ldapSettings).then(function (result) {\n\t      if (result.connected) {\n\t        _this.setState({ serverConnectionStatus: { loading: false, success: true } });\n\t      } else {\n\t        _this.setState({ serverConnectionStatus: { loading: false, error: result.exception } });\n\t      }\n\t    }, function () {\n\t      _this.setState({\n\t        serverConnectionStatus: {\n\t          loading: false,\n\t          error: 'Unable to check connection, please try again.'\n\t        }\n\t      });\n\t    });\n\t\n\t    this.setState({ serverConnectionStatus: { loading: true } });\n\t  },\n\t  _getServerConnectionStyle: function _getServerConnectionStyle() {\n\t    if (this.state.serverConnectionStatus.success) {\n\t      return 'success';\n\t    }\n\t    if (this.state.serverConnectionStatus.error) {\n\t      return 'danger';\n\t    }\n\t\n\t    return 'info';\n\t  },\n\t  render: function render() {\n\t    var serverConnectionStatus = this.state.serverConnectionStatus;\n\t    var isDisabled = this.props.disabled || this.props.ldapUri.hostname() === '' || serverConnectionStatus.loading;\n\t\n\t    var serverConnectionResult = void 0;\n\t    if (serverConnectionStatus.error) {\n\t      serverConnectionResult = _react2.default.createElement(\n\t        _reactBootstrap.Alert,\n\t        { bsStyle: 'danger' },\n\t        serverConnectionStatus.error\n\t      );\n\t    }\n\t    if (serverConnectionStatus.success) {\n\t      serverConnectionResult = _react2.default.createElement(\n\t        _reactBootstrap.Alert,\n\t        { bsStyle: 'success' },\n\t        'Connection to server was successful'\n\t      );\n\t    }\n\t\n\t    return _react2.default.createElement(\n\t      'div',\n\t      { className: 'form-group' },\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Row,\n\t        null,\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Col,\n\t          { sm: 9, smOffset: 3 },\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Button,\n\t            { id: 'ldap-test-connection', bsStyle: this._getServerConnectionStyle(),\n\t              disabled: isDisabled,\n\t              onClick: this._testServerConnection },\n\t            serverConnectionStatus.loading ? 'Testing...' : 'Test Server Connection'\n\t          ),\n\t          _react2.default.createElement(\n\t            'span',\n\t            {\n\t              className: 'help-block' },\n\t            'Performs a background connection check with the address and credentials above.'\n\t          ),\n\t          serverConnectionResult\n\t        )\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = TestLdapConnection;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 295:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _ObjectUtils = __webpack_require__(47);\n\t\n\tvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\t\n\tvar _ActionsProvider = __webpack_require__(6);\n\t\n\tvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar LdapActions = _ActionsProvider2.default.getActions('Ldap');\n\t\n\tvar TestLdapLogin = _react2.default.createClass({\n\t  displayName: 'TestLdapLogin',\n\t\n\t  propTypes: {\n\t    ldapSettings: _react.PropTypes.object.isRequired,\n\t    disabled: _react.PropTypes.bool\n\t  },\n\t\n\t  getInitialState: function getInitialState() {\n\t    return {\n\t      loginUser: '',\n\t      loginPassword: '',\n\t      loginStatus: {}\n\t    };\n\t  },\n\t  componentDidMount: function componentDidMount() {\n\t    this.style.use();\n\t  },\n\t  componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t    // Reset login status if ldapSettings changed\n\t    if (JSON.stringify(this.props.ldapSettings) !== JSON.stringify(nextProps.ldapSettings)) {\n\t      this.setState({ loginStatus: {} });\n\t    }\n\t  },\n\t  componentWillUnmount: function componentWillUnmount() {\n\t    this.style.unuse();\n\t  },\n\t\n\t\n\t  style: __webpack_require__(505),\n\t\n\t  _changeLoginForm: function _changeLoginForm(event) {\n\t    var newState = {};\n\t    var key = event.target.name === 'test_login_username' ? 'loginUser' : 'loginPassword';\n\t    newState[key] = event.target.value;\n\t    newState.loginStatus = {};\n\t    this.setState(newState);\n\t  },\n\t  _disableSubmitOnEnter: function _disableSubmitOnEnter(event) {\n\t    if (event.key && event.key === 'Enter') {\n\t      event.preventDefault();\n\t    }\n\t  },\n\t  _testLogin: function _testLogin() {\n\t    var _this = this;\n\t\n\t    LdapActions.testLogin.triggerPromise(this.props.ldapSettings, this.state.loginUser, this.state.loginPassword).then(function (result) {\n\t      if (result.connected && (result.login_authenticated || !_ObjectUtils2.default.isEmpty(result.entry))) {\n\t        _this.setState({ loginStatus: { loading: false, success: true, result: result } });\n\t      } else {\n\t        _this.setState({ loginStatus: { loading: false, error: true, result: result } });\n\t      }\n\t    }, function () {\n\t      _this.setState({\n\t        loginStatus: {\n\t          loading: false,\n\t          error: true,\n\t          result: {\n\t            exception: 'Unable to test login, please try again.'\n\t          }\n\t        }\n\t      });\n\t    });\n\t\n\t    this.setState({ loginStatus: { loading: true } });\n\t  },\n\t  _loginTestButtonStyle: function _loginTestButtonStyle() {\n\t    if (this.state.loginStatus.success) {\n\t      return 'success';\n\t    }\n\t    if (this.state.loginStatus.error) {\n\t      return 'danger';\n\t    }\n\t\n\t    return 'info';\n\t  },\n\t  _formatLoginStatus: function _formatLoginStatus(loginStatus) {\n\t    // Don't show any status if login didn't complete\n\t    if (!loginStatus.error && !loginStatus.success) {\n\t      return null;\n\t    }\n\t\n\t    var title = 'Connection ' + (loginStatus.error ? 'failed' : 'successful');\n\t    var style = loginStatus.error ? 'danger' : 'success';\n\t\n\t    var userFound = void 0;\n\t    if (_ObjectUtils2.default.isEmpty(loginStatus.result.entry)) {\n\t      userFound = _react2.default.createElement('i', { className: 'fa fa-times ldap-failure' });\n\t    } else {\n\t      userFound = _react2.default.createElement('i', { className: 'fa fa-check ldap-success' });\n\t    }\n\t\n\t    var loginCheck = void 0;\n\t    if (loginStatus.result.login_authenticated) {\n\t      loginCheck = _react2.default.createElement('i', { className: 'fa fa-check ldap-success' });\n\t    } else {\n\t      if (this.state.loginPassword === '') {\n\t        loginCheck = _react2.default.createElement('i', { className: 'fa fa-question ldap-info' });\n\t      } else {\n\t        loginCheck = _react2.default.createElement('i', { className: 'fa fa-times ldap-failure' });\n\t      }\n\t    }\n\t\n\t    var serverResponse = void 0;\n\t    if (loginStatus.result.exception) {\n\t      serverResponse = _react2.default.createElement(\n\t        'pre',\n\t        null,\n\t        loginStatus.result.exception\n\t      );\n\t    }\n\t\n\t    var attributes = Object.keys(loginStatus.result.entry).map(function (key) {\n\t      return [_react2.default.createElement(\n\t        'dt',\n\t        null,\n\t        key\n\t      ), _react2.default.createElement(\n\t        'dd',\n\t        null,\n\t        loginStatus.result.entry[key]\n\t      )];\n\t    });\n\t    var formattedEntry = attributes.length > 0 ? _react2.default.createElement(\n\t      'dl',\n\t      null,\n\t      attributes\n\t    ) : _react2.default.createElement(\n\t      'p',\n\t      null,\n\t      'LDAP server did not return any attributes for the user.'\n\t    );\n\t\n\t    var groups = loginStatus.result.groups ? loginStatus.result.groups.map(function (group) {\n\t      return _react2.default.createElement(\n\t        'li',\n\t        { key: group },\n\t        group\n\t      );\n\t    }) : [];\n\t    var formattedGroups = groups.length > 0 ? _react2.default.createElement(\n\t      'ul',\n\t      { style: { padding: 0 } },\n\t      groups\n\t    ) : _react2.default.createElement(\n\t      'p',\n\t      null,\n\t      'LDAP server did not return any groups for the user.'\n\t    );\n\t\n\t    return _react2.default.createElement(\n\t      _reactBootstrap.Row,\n\t      null,\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Col,\n\t        { sm: 9, smOffset: 3 },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Panel,\n\t          { header: title, bsStyle: style, className: 'ldap-test-login-result' },\n\t          _react2.default.createElement(\n\t            'ul',\n\t            { className: 'login-status' },\n\t            _react2.default.createElement(\n\t              'li',\n\t              null,\n\t              _react2.default.createElement(\n\t                'h4',\n\t                null,\n\t                'User found ',\n\t                userFound\n\t              )\n\t            ),\n\t            _react2.default.createElement(\n\t              'li',\n\t              null,\n\t              _react2.default.createElement(\n\t                'h4',\n\t                null,\n\t                'Login attempt ',\n\t                loginCheck\n\t              )\n\t            )\n\t          ),\n\t          serverResponse && _react2.default.createElement(\n\t            'h4',\n\t            null,\n\t            'Server response'\n\t          ),\n\t          serverResponse,\n\t          _react2.default.createElement(\n\t            'h4',\n\t            null,\n\t            'User\\'s LDAP attributes'\n\t          ),\n\t          formattedEntry,\n\t          _react2.default.createElement(\n\t            'h4',\n\t            null,\n\t            'User\\'s LDAP groups'\n\t          ),\n\t          formattedGroups\n\t        )\n\t      )\n\t    );\n\t  },\n\t  render: function render() {\n\t    var loginStatus = this.state.loginStatus;\n\t    var loginDisabled = this.props.disabled || !this.state.loginUser || loginStatus.loading;\n\t\n\t    return _react2.default.createElement(\n\t      'div',\n\t      null,\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Input,\n\t        { id: 'test_login_username', labelClassName: 'col-sm-3', wrapperClassName: 'col-sm-9', label: 'Login test',\n\t          help: 'Verify the previous settings by loading the entry for the given user name. If you omit the password, no authentication attempt will be made.' },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Row,\n\t          { className: 'row-sm' },\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Col,\n\t            { sm: 5 },\n\t            _react2.default.createElement('input', { type: 'text', id: 'test_login_username', name: 'test_login_username', className: 'form-control',\n\t              value: this.state.loginUser, onChange: this._changeLoginForm,\n\t              onKeyPress: this._disableSubmitOnEnter,\n\t              placeholder: 'Username for login test', disabled: this.props.disabled })\n\t          ),\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Col,\n\t            { sm: 5 },\n\t            _react2.default.createElement('input', { type: 'password', id: 'test_login_password', name: 'test_login_password', className: 'form-control',\n\t              value: this.state.testLoginPassword, onChange: this._changeLoginForm,\n\t              onKeyPress: this._disableSubmitOnEnter,\n\t              placeholder: 'Password', disabled: this.props.disabled })\n\t          ),\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Col,\n\t            { sm: 2 },\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Button,\n\t              { bsStyle: this._loginTestButtonStyle(), disabled: loginDisabled,\n\t                onClick: this._testLogin },\n\t              loginStatus.loading ? 'Testing...' : 'Test login'\n\t            )\n\t          )\n\t        )\n\t      ),\n\t      this._formatLoginStatus(loginStatus)\n\t    );\n\t  }\n\t});\n\t\n\texports.default = TestLdapLogin;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 369:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(19)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".ldap-test-login-result h4{margin-bottom:10px}.ldap-test-login-result .login-status{padding:0;margin-bottom:10px}.ldap-test-login-result .login-status li{display:inline-block;margin-right:20px}.ldap-success{color:green}.ldap-failure{color:maroon}.ldap-info{color:#337ab7}\", \"\"]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 505:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar refs = 0;\n\tvar dispose;\n\tvar content = __webpack_require__(369);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\texports.use = exports.ref = function() {\n\t\tif(!(refs++)) {\n\t\t\texports.locals = content.locals;\n\t\t\tdispose = __webpack_require__(20)(content, {});\n\t\t}\n\t\treturn exports;\n\t};\n\texports.unuse = exports.unref = function() {\n\t\tif(!(--refs)) {\n\t\t\tdispose();\n\t\t\tdispose = null;\n\t\t}\n\t};\n\tif(false) {\n\t\tvar lastRefs = module.hot.data && module.hot.data.refs || 0;\n\t\tif(lastRefs) {\n\t\t\texports.ref();\n\t\t\tif(!content.locals) {\n\t\t\t\trefs = lastRefs;\n\t\t\t}\n\t\t}\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept();\n\t\t}\n\t\tmodule.hot.dispose(function(data) {\n\t\t\tdata.refs = content.locals ? 0 : refs;\n\t\t\tif(dispose) {\n\t\t\t\tdispose();\n\t\t\t}\n\t\t});\n\t}\n\n/***/ },\n\n/***/ 673:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar AccessTokenConfig = _react2.default.createClass({\n\t  displayName: 'AccessTokenConfig',\n\t\n\t  propTypes: {\n\t    config: _react.PropTypes.object\n\t  },\n\t  render: function render() {\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _common.PageHeader,\n\t        { title: 'Access Token Authenticator', subpage: true },\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'Each user can generate access tokens to avoid having to use their main password in insecure scripts.'\n\t        )\n\t      ),\n\t      _react2.default.createElement(\n\t        'span',\n\t        null,\n\t        'There currently is no configuration available for access tokens. You can safely disable this authenticator if you do not use access tokens.'\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = AccessTokenConfig;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 674:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _BootstrapModalForm = __webpack_require__(38);\n\t\n\tvar _BootstrapModalForm2 = _interopRequireDefault(_BootstrapModalForm);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tvar _Routes = __webpack_require__(11);\n\t\n\tvar _Routes2 = _interopRequireDefault(_Routes);\n\t\n\tvar _ObjectUtils = __webpack_require__(47);\n\t\n\tvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\t\n\tvar _javascriptNaturalSort = __webpack_require__(48);\n\t\n\tvar _javascriptNaturalSort2 = _interopRequireDefault(_javascriptNaturalSort);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar AuthProvidersConfig = _react2.default.createClass({\n\t  displayName: 'AuthProvidersConfig',\n\t\n\t  propTypes: {\n\t    config: _react2.default.PropTypes.object.isRequired,\n\t    descriptors: _react2.default.PropTypes.object.isRequired,\n\t    updateConfig: _react2.default.PropTypes.func.isRequired,\n\t    history: _react2.default.PropTypes.object.isRequired\n\t  },\n\t\n\t  getDefaultProps: function getDefaultProps() {\n\t    return {\n\t      config: {\n\t        disabled_realms: [],\n\t        realm_order: []\n\t      }\n\t    };\n\t  },\n\t  getInitialState: function getInitialState() {\n\t    return {\n\t      config: {\n\t        disabled_realms: this.props.config.disabled_realms,\n\t        realm_order: this.props.config.realm_order\n\t      }\n\t    };\n\t  },\n\t  _openModal: function _openModal() {\n\t    this.refs.configModal.open();\n\t  },\n\t  _closeModal: function _closeModal() {\n\t    this.refs.configModal.close();\n\t  },\n\t  _saveConfig: function _saveConfig() {\n\t    var _this = this;\n\t\n\t    if (!this._hasNoActiveRealm()) {\n\t      this.props.updateConfig(this.state.config).then(function () {\n\t        _this._closeModal();\n\t      });\n\t    }\n\t  },\n\t  _resetConfig: function _resetConfig() {\n\t    // Reset to initial state when the modal is closed without saving.\n\t    this.setState(this.getInitialState());\n\t  },\n\t  _onCancel: function _onCancel() {\n\t    this.props.history.pushState(null, _Routes2.default.SYSTEM.AUTHENTICATION.OVERVIEW);\n\t  },\n\t  _updateSorting: function _updateSorting(newSorting) {\n\t    var update = _ObjectUtils2.default.clone(this.state.config);\n\t\n\t    update.realm_order = newSorting.map(function (entry) {\n\t      return entry.id;\n\t    });\n\t\n\t    this.setState({ config: update });\n\t  },\n\t  _toggleStatus: function _toggleStatus(realmName) {\n\t    var _this2 = this;\n\t\n\t    return function () {\n\t      var disabledProcessors = _this2.state.config.disabled_realms;\n\t      var update = _ObjectUtils2.default.clone(_this2.state.config);\n\t      var checked = _this2.refs[realmName].checked;\n\t\n\t      if (checked) {\n\t        update.disabled_realms = disabledProcessors.filter(function (p) {\n\t          return p !== realmName;\n\t        });\n\t      } else {\n\t        if (disabledProcessors.indexOf(realmName) === -1) {\n\t          update.disabled_realms.push(realmName);\n\t        }\n\t      }\n\t\n\t      _this2.setState({ config: update });\n\t    };\n\t  },\n\t  _hasNoActiveRealm: function _hasNoActiveRealm() {\n\t    return this.state.config.disabled_realms.length >= this.state.config.realm_order.length;\n\t  },\n\t  _noActiveRealmWarning: function _noActiveRealmWarning() {\n\t    if (this._hasNoActiveRealm()) {\n\t      return _react2.default.createElement(\n\t        _reactBootstrap.Alert,\n\t        { bsStyle: 'danger' },\n\t        _react2.default.createElement(\n\t          'strong',\n\t          null,\n\t          'ERROR:'\n\t        ),\n\t        ' No active authentication provider!'\n\t      );\n\t    } else {\n\t      return null;\n\t    }\n\t  },\n\t  _summary: function _summary() {\n\t    var _this3 = this;\n\t\n\t    return this.state.config.realm_order.map(function (name, idx) {\n\t      var status = _this3.state.config.disabled_realms.filter(function (disabledName) {\n\t        return disabledName === name;\n\t      }).length > 0 ? 'disabled' : 'active';\n\t      var realm = _this3.props.descriptors[name] || { id: name, title: 'Unavailable' };\n\t      return _react2.default.createElement(\n\t        'tr',\n\t        { key: idx },\n\t        _react2.default.createElement(\n\t          'td',\n\t          null,\n\t          idx + 1\n\t        ),\n\t        _react2.default.createElement(\n\t          'td',\n\t          null,\n\t          realm.displayName\n\t        ),\n\t        _react2.default.createElement(\n\t          'td',\n\t          null,\n\t          realm.description\n\t        ),\n\t        _react2.default.createElement(\n\t          'td',\n\t          null,\n\t          status\n\t        )\n\t      );\n\t    });\n\t  },\n\t  _sortableItems: function _sortableItems() {\n\t    var _this4 = this;\n\t\n\t    return this.state.config.realm_order.map(function (name) {\n\t      var realm = _this4.props.descriptors[name] || { id: name, title: 'Unavailable' };\n\t      return { id: realm.name, title: realm.displayName };\n\t    });\n\t  },\n\t  _statusForm: function _statusForm() {\n\t    var _this5 = this;\n\t\n\t    return _ObjectUtils2.default.clone(this.state.config.realm_order).sort(function (a, b) {\n\t      return (0, _javascriptNaturalSort2.default)(a.displayName, b.displayName);\n\t    }).map(function (realmName, idx) {\n\t      var enabled = _this5.state.config.disabled_realms.filter(function (disabledName) {\n\t        return disabledName === realmName;\n\t      }).length < 1;\n\t      var realm = _this5.props.descriptors[realmName] || { id: realmName, displayName: 'Unavailable' };\n\t\n\t      return _react2.default.createElement(\n\t        'tr',\n\t        { key: idx },\n\t        _react2.default.createElement(\n\t          'td',\n\t          null,\n\t          realm.displayName\n\t        ),\n\t        _react2.default.createElement(\n\t          'td',\n\t          null,\n\t          _react2.default.createElement('input', { ref: realm.name,\n\t            type: 'checkbox',\n\t            checked: enabled,\n\t            disabled: !realm.canBeDisabled,\n\t            onChange: _this5._toggleStatus(realm.name) })\n\t        )\n\t      );\n\t    });\n\t  },\n\t  render: function render() {\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _common.PageHeader,\n\t        { title: 'Authentication Providers', subpage: true },\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'The following authentication providers executed in order during login. Disabled providers will be skipped.',\n\t          _react2.default.createElement('br', null),\n\t          'A user is authenticated by the first matching provider, a successful match can cause a Graylog account for this user to be created.'\n\t        )\n\t      ),\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Row,\n\t        null,\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Col,\n\t          { md: 6 },\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Table,\n\t            { striped: true, bordered: true, className: 'top-margin' },\n\t            _react2.default.createElement(\n\t              'thead',\n\t              null,\n\t              _react2.default.createElement(\n\t                'tr',\n\t                null,\n\t                _react2.default.createElement(\n\t                  'th',\n\t                  null,\n\t                  '#'\n\t                ),\n\t                _react2.default.createElement(\n\t                  'th',\n\t                  null,\n\t                  'Provider'\n\t                ),\n\t                _react2.default.createElement(\n\t                  'th',\n\t                  null,\n\t                  'Description'\n\t                ),\n\t                _react2.default.createElement(\n\t                  'th',\n\t                  null,\n\t                  'Status'\n\t                )\n\t              )\n\t            ),\n\t            _react2.default.createElement(\n\t              'tbody',\n\t              null,\n\t              this._summary()\n\t            )\n\t          ),\n\t          _react2.default.createElement(\n\t            _common.IfPermitted,\n\t            { permissions: 'clusterconfigentry:edit' },\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Button,\n\t              { bsStyle: 'primary', onClick: this._openModal, className: 'save-button-margin' },\n\t              'Update'\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Button,\n\t              { onClick: this._onCancel },\n\t              'Cancel'\n\t            )\n\t          ),\n\t          _react2.default.createElement(\n\t            _BootstrapModalForm2.default,\n\t            { ref: 'configModal',\n\t              title: 'Update Authentication Provider Configuration',\n\t              onSubmitForm: this._saveConfig,\n\t              onModalClose: this._resetConfig,\n\t              submitButtonText: 'Save' },\n\t            _react2.default.createElement(\n\t              'h3',\n\t              null,\n\t              'Order'\n\t            ),\n\t            _react2.default.createElement(\n\t              'p',\n\t              null,\n\t              'Use drag and drop to change the execution order of the authentication providers.'\n\t            ),\n\t            _react2.default.createElement(_common.SortableList, { items: this._sortableItems(), onMoveItem: this._updateSorting }),\n\t            _react2.default.createElement(\n\t              'h3',\n\t              null,\n\t              'Status'\n\t            ),\n\t            _react2.default.createElement(\n\t              'p',\n\t              null,\n\t              'Change the checkboxes to change the status of an authentication provider.'\n\t            ),\n\t            _react2.default.createElement(\n\t              _reactBootstrap.Table,\n\t              { striped: true, bordered: true, condensed: true, className: 'top-margin' },\n\t              _react2.default.createElement(\n\t                'thead',\n\t                null,\n\t                _react2.default.createElement(\n\t                  'tr',\n\t                  null,\n\t                  _react2.default.createElement(\n\t                    'th',\n\t                    null,\n\t                    'Provider'\n\t                  ),\n\t                  _react2.default.createElement(\n\t                    'th',\n\t                    null,\n\t                    'Enabled'\n\t                  )\n\t                )\n\t              ),\n\t              _react2.default.createElement(\n\t                'tbody',\n\t                null,\n\t                this._statusForm()\n\t              )\n\t            ),\n\t            this._noActiveRealmWarning()\n\t          )\n\t        )\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = AuthProvidersConfig;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 675:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reflux = __webpack_require__(4);\n\t\n\tvar _reflux2 = _interopRequireDefault(_reflux);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _reactRouterBootstrap = __webpack_require__(18);\n\t\n\tvar _Routes = __webpack_require__(11);\n\t\n\tvar _Routes2 = _interopRequireDefault(_Routes);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tvar _plugin = __webpack_require__(42);\n\t\n\tvar _PermissionsMixin = __webpack_require__(25);\n\t\n\tvar _PermissionsMixin2 = _interopRequireDefault(_PermissionsMixin);\n\t\n\tvar _AuthProvidersConfig = __webpack_require__(674);\n\t\n\tvar _AuthProvidersConfig2 = _interopRequireDefault(_AuthProvidersConfig);\n\t\n\tvar _ActionsProvider = __webpack_require__(6);\n\t\n\tvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\t\n\tvar _StoreProvider = __webpack_require__(3);\n\t\n\tvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\t\n\tvar _AuthenticationComponent = __webpack_require__(1261);\n\t\n\tvar _AuthenticationComponent2 = _interopRequireDefault(_AuthenticationComponent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar AuthenticationActions = _ActionsProvider2.default.getActions('Authentication');\n\t\n\tvar AuthenticationStore = _StoreProvider2.default.getStore('Authentication');\n\tvar CurrentUserStore = _StoreProvider2.default.getStore('CurrentUser');\n\t\n\tvar AuthenticationComponent = _react2.default.createClass({\n\t  displayName: 'AuthenticationComponent',\n\t\n\t\n\t  propTypes: {\n\t    location: _react2.default.PropTypes.object.isRequired,\n\t    params: _react2.default.PropTypes.object.isRequired,\n\t    history: _react2.default.PropTypes.object.isRequired,\n\t    children: _react2.default.PropTypes.element\n\t  },\n\t\n\t  mixins: [_reflux2.default.connect(AuthenticationStore), _reflux2.default.connect(CurrentUserStore), _PermissionsMixin2.default],\n\t\n\t  componentDidMount: function componentDidMount() {\n\t    var _this = this;\n\t\n\t    AuthenticationActions.load();\n\t\n\t    _plugin.PluginStore.exports('authenticatorConfigurations').forEach(function (authConfig) {\n\t      _this.authenticatorConfigurations[authConfig.name] = authConfig;\n\t      // TODO load per authenticator config\n\t    });\n\t  },\n\t\n\t\n\t  // contains the 'authname' -> plugin descriptor\n\t  authenticatorConfigurations: {},\n\t\n\t  _pluginPane: function _pluginPane() {\n\t    var name = this.props.params.name;\n\t    var auth = this.authenticatorConfigurations[name];\n\t\n\t    if (auth) {\n\t      return _react2.default.createElement(auth.component, {\n\t        key: 'auth-configuration-' + name,\n\t        history: this.props.history\n\t      });\n\t    } else {\n\t      return _react2.default.createElement(\n\t        _reactBootstrap.Alert,\n\t        { bsStyle: 'danger' },\n\t        'Plugin component missing for authenticator ',\n\t        _react2.default.createElement(\n\t          'code',\n\t          null,\n\t          name\n\t        ),\n\t        ', this is an error.'\n\t      );\n\t    }\n\t  },\n\t  _onUpdateProviders: function _onUpdateProviders(config) {\n\t    return AuthenticationActions.update('providers', config);\n\t  },\n\t  _contentComponent: function _contentComponent() {\n\t    if (!this.state.authenticators) {\n\t      return _react2.default.createElement(_common.Spinner, null);\n\t    }\n\t    if (this.props.params.name === undefined) {\n\t      return _react2.default.createElement(_AuthProvidersConfig2.default, { config: this.state.authenticators,\n\t        descriptors: this.authenticatorConfigurations,\n\t        updateConfig: this._onUpdateProviders,\n\t        history: this.props.history });\n\t    }\n\t    return this._pluginPane();\n\t  },\n\t  render: function render() {\n\t    var _this2 = this;\n\t\n\t    var authenticators = [];\n\t    var auths = this.state.authenticators;\n\t    if (auths) {\n\t      // only show the entries if the user is permitted to change them, makes no sense otherwise\n\t      if (this.isPermitted(this.state.currentUser.permissions, ['authentication:edit'])) {\n\t        authenticators = auths.realm_order.map(function (name, idx) {\n\t          var auth = _this2.authenticatorConfigurations[name];\n\t          var title = (auth || { displayName: name }).displayName;\n\t          var numberedTitle = idx + 1 + '. ' + title;\n\t          return _react2.default.createElement(\n\t            _reactRouterBootstrap.LinkContainer,\n\t            { key: 'container-' + name, to: _Routes2.default.SYSTEM.AUTHENTICATION.PROVIDERS.provider(name) },\n\t            _react2.default.createElement(\n\t              _reactBootstrap.NavItem,\n\t              { key: name, title: numberedTitle },\n\t              numberedTitle\n\t            )\n\t          );\n\t        });\n\t\n\t        authenticators.unshift(_react2.default.createElement(\n\t          _reactBootstrap.NavItem,\n\t          { key: 'divider', disabled: true, title: 'Provider Settings', className: _AuthenticationComponent2.default.divider },\n\t          'Provider Settings'\n\t        ));\n\t        authenticators.unshift(_react2.default.createElement(\n\t          _reactRouterBootstrap.LinkContainer,\n\t          { key: 'container-settings', to: _Routes2.default.SYSTEM.AUTHENTICATION.PROVIDERS.CONFIG },\n\t          _react2.default.createElement(\n\t            _reactBootstrap.NavItem,\n\t            { key: 'settings', title: 'Configure Provider Order' },\n\t            'Configure Provider Order'\n\t          )\n\t        ));\n\t      }\n\t    } else {\n\t      authenticators = [_react2.default.createElement(\n\t        _reactBootstrap.NavItem,\n\t        { key: \"loading\", disabled: true, title: 'Loading...' },\n\t        'Loading...'\n\t      )];\n\t    }\n\t\n\t    // add submenu items based on permissions\n\t    if (this.isPermitted(this.state.currentUser.permissions, ['roles:read'])) {\n\t      authenticators.unshift(_react2.default.createElement(\n\t        _reactRouterBootstrap.LinkContainer,\n\t        { key: 'roles', to: _Routes2.default.SYSTEM.AUTHENTICATION.ROLES },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.NavItem,\n\t          { title: 'Roles' },\n\t          'Roles'\n\t        )\n\t      ));\n\t    }\n\t    if (this.isPermitted(this.state.currentUser.permissions, ['users:list'])) {\n\t      authenticators.unshift(_react2.default.createElement(\n\t        _reactRouterBootstrap.LinkContainer,\n\t        { key: 'users', to: _Routes2.default.SYSTEM.AUTHENTICATION.USERS.LIST },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.NavItem,\n\t          { title: 'Users' },\n\t          'Users'\n\t        )\n\t      ));\n\t    }\n\t\n\t    if (authenticators.length === 0) {\n\t      // special case, this is a user editing their own profile\n\t      authenticators = [_react2.default.createElement(\n\t        _reactRouterBootstrap.LinkContainer,\n\t        { key: 'profile-edit', to: _Routes2.default.SYSTEM.AUTHENTICATION.USERS.edit(this.state.currentUser.username) },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.NavItem,\n\t          { title: 'Edit User' },\n\t          'Edit User'\n\t        )\n\t      )];\n\t    }\n\t    var subnavigation = _react2.default.createElement(\n\t      _reactBootstrap.Nav,\n\t      { stacked: true, bsStyle: 'pills' },\n\t      authenticators\n\t    );\n\t\n\t    var contentComponent = _react2.default.Children.count(this.props.children) === 1 ? _react2.default.Children.only(this.props.children) : this._contentComponent();\n\t\n\t    return _react2.default.createElement(\n\t      _reactBootstrap.Row,\n\t      null,\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Col,\n\t        { md: 2, className: _AuthenticationComponent2.default.subnavigation },\n\t        subnavigation\n\t      ),\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Col,\n\t        { md: 10, className: _AuthenticationComponent2.default.contentpane },\n\t        contentComponent\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = AuthenticationComponent;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 676:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _LdapComponent = __webpack_require__(292);\n\t\n\tvar _LdapComponent2 = _interopRequireDefault(_LdapComponent);\n\t\n\tvar _LdapGroupsComponent = __webpack_require__(293);\n\t\n\tvar _LdapGroupsComponent2 = _interopRequireDefault(_LdapGroupsComponent);\n\t\n\tvar _CombinedProvider = __webpack_require__(94);\n\t\n\tvar _CombinedProvider2 = _interopRequireDefault(_CombinedProvider);\n\t\n\tvar _Routes = __webpack_require__(11);\n\t\n\tvar _Routes2 = _interopRequireDefault(_Routes);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _CombinedProvider$get = _CombinedProvider2.default.get('Ldap');\n\t\n\tvar LdapActions = _CombinedProvider$get.LdapActions;\n\t\n\t\n\tvar LegacyLdapConfig = _react2.default.createClass({\n\t  displayName: 'LegacyLdapConfig',\n\t\n\t  propTypes: {\n\t    config: _react.PropTypes.object,\n\t    history: _react.PropTypes.object.isRequired\n\t  },\n\t  getInitialState: function getInitialState() {\n\t    return {\n\t      showSettings: true\n\t    };\n\t  },\n\t  componentDidMount: function componentDidMount() {\n\t    LdapActions.loadSettings();\n\t  },\n\t  _toggleButton: function _toggleButton() {\n\t    this.setState({ showSettings: !this.state.showSettings });\n\t  },\n\t  _onSettingsCancel: function _onSettingsCancel() {\n\t    this._toggleButton();\n\t  },\n\t  _onCancel: function _onCancel() {\n\t    this.props.history.pushState(null, _Routes2.default.SYSTEM.AUTHENTICATION.OVERVIEW);\n\t  },\n\t  render: function render() {\n\t    var toggleButtonText = this.state.showSettings ? 'LDAP Group Mapping' : 'LDAP Settings';\n\t    var activeComponent = this.state.showSettings ? _react2.default.createElement(_LdapComponent2.default, { onCancel: this._onCancel }) : _react2.default.createElement(_LdapGroupsComponent2.default, { onCancel: this._onSettingsCancel });\n\t\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _common.PageHeader,\n\t        { title: 'LDAP Settings', subpage: true },\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'This page is the only resource you need to set up the Graylog LDAP integration. You can test the connection to your LDAP server and even try to log in with an LDAP account of your choice right away.'\n\t        ),\n\t        null,\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          _react2.default.createElement(\n\t            _reactBootstrap.Button,\n\t            { bsStyle: 'success', onClick: this._toggleButton },\n\t            toggleButtonText\n\t          )\n\t        )\n\t      ),\n\t      activeComponent\n\t    );\n\t  }\n\t});\n\t\n\texports.default = LegacyLdapConfig;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 677:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar MongoDbPasswordConfig = _react2.default.createClass({\n\t  displayName: 'MongoDbPasswordConfig',\n\t\n\t  propTypes: {\n\t    config: _react.PropTypes.object\n\t  },\n\t  render: function render() {\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _common.PageHeader,\n\t        { title: 'Password Authenticator', subpage: true },\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'This authenticator uses the password stored in MongoDB to grant access to users, it usually runs last, so that other authentication sources have priority.'\n\t        )\n\t      ),\n\t      _react2.default.createElement(\n\t        'span',\n\t        null,\n\t        'If you only rely on external authentication systems, such as LDAP or Active Directory, you can disable this authenticator. It currently has no configuration options.'\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = MongoDbPasswordConfig;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 678:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar MongoDbSessionConfig = _react2.default.createClass({\n\t  displayName: 'MongoDbSessionConfig',\n\t\n\t  propTypes: {\n\t    config: _react.PropTypes.object\n\t  },\n\t  render: function render() {\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _common.PageHeader,\n\t        { title: 'Session Authenticator', subpage: true },\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'This authenticator uses the session supplied from the web interface to grant access to logged in users, it usually runs first.'\n\t        )\n\t      ),\n\t      _react2.default.createElement(\n\t        'span',\n\t        null,\n\t        'Since sessions are necessary to let the web interface function it cannot be disabled.'\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = MongoDbSessionConfig;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 679:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _common = __webpack_require__(5);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar RootUserConfig = _react2.default.createClass({\n\t  displayName: 'RootUserConfig',\n\t\n\t  propTypes: {\n\t    config: _react.PropTypes.object\n\t  },\n\t  render: function render() {\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _common.PageHeader,\n\t        { title: 'Admin User Authenticator', subpage: true },\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'This authenticator grants access to the admin user specified in the configuration file.'\n\t        )\n\t      ),\n\t      _react2.default.createElement(\n\t        'span',\n\t        null,\n\t        'Currently the admin user authenticator cannot be configured outside of the configuration file. It can also not be disabled at the moment.'\n\t      )\n\t    );\n\t  }\n\t});\n\t\n\texports.default = RootUserConfig;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 680:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _plugin = __webpack_require__(42);\n\t\n\tvar _MongoDbPasswordConfig = __webpack_require__(677);\n\t\n\tvar _MongoDbPasswordConfig2 = _interopRequireDefault(_MongoDbPasswordConfig);\n\t\n\tvar _MongoDbSessionConfig = __webpack_require__(678);\n\t\n\tvar _MongoDbSessionConfig2 = _interopRequireDefault(_MongoDbSessionConfig);\n\t\n\tvar _LegacyLdapConfig = __webpack_require__(676);\n\t\n\tvar _LegacyLdapConfig2 = _interopRequireDefault(_LegacyLdapConfig);\n\t\n\tvar _RootUserConfig = __webpack_require__(679);\n\t\n\tvar _RootUserConfig2 = _interopRequireDefault(_RootUserConfig);\n\t\n\tvar _AccessTokenConfig = __webpack_require__(673);\n\t\n\tvar _AccessTokenConfig2 = _interopRequireDefault(_AccessTokenConfig);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t_plugin.PluginStore.register(new _plugin.PluginManifest({}, {\n\t  authenticatorConfigurations: [{\n\t    name: 'mongodb-password',\n\t    displayName: 'Passwords',\n\t    description: 'Graylog managed account passwords (from MongoDB)',\n\t    canBeDisabled: true,\n\t    component: _MongoDbPasswordConfig2.default\n\t  }, {\n\t    name: 'mongodb-session',\n\t    displayName: 'Sessions',\n\t    description: 'Established session authenticator',\n\t    canBeDisabled: false,\n\t    component: _MongoDbSessionConfig2.default\n\t  }, {\n\t    name: 'legacy-ldap',\n\t    displayName: 'LDAP/Active Directory',\n\t    description: 'Authenticates against external system and creates accounts in Graylog',\n\t    canBeDisabled: true,\n\t    component: _LegacyLdapConfig2.default\n\t  }, {\n\t    name: 'root-user',\n\t    displayName: 'Admin user',\n\t    description: 'Static account configured in the server configuration file',\n\t    canBeDisabled: false,\n\t    component: _RootUserConfig2.default\n\t  }, {\n\t    name: 'access-token',\n\t    displayName: 'API Tokens',\n\t    description: 'Per user tokens which do not establish sessions',\n\t    canBeDisabled: true,\n\t    component: _AccessTokenConfig2.default\n\t  }]\n\t}));\n\n/***/ },\n\n/***/ 847:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactBootstrap = __webpack_require__(2);\n\t\n\tvar _DocsHelper = __webpack_require__(17);\n\t\n\tvar _DocsHelper2 = _interopRequireDefault(_DocsHelper);\n\t\n\tvar _PermissionsMixin = __webpack_require__(25);\n\t\n\tvar _PermissionsMixin2 = _interopRequireDefault(_PermissionsMixin);\n\t\n\t__webpack_require__(680);\n\t\n\tvar _PageHeader = __webpack_require__(39);\n\t\n\tvar _PageHeader2 = _interopRequireDefault(_PageHeader);\n\t\n\tvar _DocumentationLink = __webpack_require__(29);\n\t\n\tvar _DocumentationLink2 = _interopRequireDefault(_DocumentationLink);\n\t\n\tvar _AuthenticationComponent = __webpack_require__(675);\n\t\n\tvar _AuthenticationComponent2 = _interopRequireDefault(_AuthenticationComponent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar AuthenticationPage = _react2.default.createClass({\n\t  displayName: 'AuthenticationPage',\n\t\n\t\n\t  propTypes: {\n\t    children: _react2.default.PropTypes.object,\n\t    location: _react2.default.PropTypes.object.isRequired,\n\t    params: _react2.default.PropTypes.object.isRequired,\n\t    history: _react2.default.PropTypes.object.isRequired\n\t  },\n\t\n\t  mixins: [_PermissionsMixin2.default],\n\t\n\t  render: function render() {\n\t    return _react2.default.createElement(\n\t      'span',\n\t      null,\n\t      _react2.default.createElement(\n\t        _PageHeader2.default,\n\t        { title: 'Authentication Management' },\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'Configure Graylog\\'s authentication providers and manage the active users of this Graylog cluster.'\n\t        ),\n\t        _react2.default.createElement(\n\t          'span',\n\t          null,\n\t          'Read more authentication in the ',\n\t          _react2.default.createElement(_DocumentationLink2.default, { page: _DocsHelper2.default.PAGES.USERS_ROLES,\n\t            text: 'documentation' }),\n\t          '.'\n\t        )\n\t      ),\n\t      _react2.default.createElement(\n\t        _reactBootstrap.Row,\n\t        { className: 'content' },\n\t        _react2.default.createElement(\n\t          _reactBootstrap.Col,\n\t          { md: 12 },\n\t          _react2.default.createElement(\n\t            _AuthenticationComponent2.default,\n\t            { location: this.props.location, params: this.props.params, history: this.props.history },\n\t            this.props.children\n\t          )\n\t        )\n\t      )\n\t    );\n\t  }\n\t}); // Make sure to load all auth config plugins!\n\t\n\texports.default = AuthenticationPage;\n\tmodule.exports = exports['default'];\n\n/***/ },\n\n/***/ 1149:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(19)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"._1-7A7Wk93i64abyb8RD454{border-right:1px solid #d1d1d1}._19WVz2Pea58X7AsOkte5Ft{border-left:1px solid #d1d1d1;margin-left:-1px}.GzKGC_ryb3VuVQhgY0qvA{border-bottom:1px solid #d1d1d1}\", \"\"]);\n\t\n\t// exports\n\texports.locals = {\n\t\t\"subnavigation\": \"_1-7A7Wk93i64abyb8RD454\",\n\t\t\"contentpane\": \"_19WVz2Pea58X7AsOkte5Ft\",\n\t\t\"divider\": \"GzKGC_ryb3VuVQhgY0qvA\"\n\t};\n\n/***/ },\n\n/***/ 1261:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a