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

web-interface.assets.21.746b58959a350aa1ebcf.js.map Maven / Gradle / Ivy

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