// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import AdminSettings from './admin_settings.jsx'; import BooleanSetting from './boolean_setting.jsx'; import {ConnectionSecurityDropdownSettingLdap} from './connection_security_dropdown_setting.jsx'; import SettingsGroup from './settings_group.jsx'; import TextSetting from './text_setting.jsx'; import SyncNowButton from './sync_now_button.jsx'; import LdapTestButton from './ldap_test_button.jsx'; import * as Utils from 'utils/utils.jsx'; import React from 'react'; import {FormattedMessage} from 'react-intl'; export default class LdapSettings extends AdminSettings { constructor(props) { super(props); this.getConfigFromState = this.getConfigFromState.bind(this); this.renderSettings = this.renderSettings.bind(this); } getConfigFromState(config) { config.LdapSettings.Enable = this.state.enable; config.LdapSettings.LdapServer = this.state.ldapServer; config.LdapSettings.LdapPort = this.parseIntNonZero(this.state.ldapPort); config.LdapSettings.ConnectionSecurity = this.state.connectionSecurity; config.LdapSettings.BaseDN = this.state.baseDN; config.LdapSettings.BindUsername = this.state.bindUsername; config.LdapSettings.BindPassword = this.state.bindPassword; config.LdapSettings.UserFilter = this.state.userFilter; config.LdapSettings.FirstNameAttribute = this.state.firstNameAttribute; config.LdapSettings.LastNameAttribute = this.state.lastNameAttribute; config.LdapSettings.NicknameAttribute = this.state.nicknameAttribute; config.LdapSettings.EmailAttribute = this.state.emailAttribute; config.LdapSettings.UsernameAttribute = this.state.usernameAttribute; config.LdapSettings.PositionAttribute = this.state.positionAttribute; config.LdapSettings.IdAttribute = this.state.idAttribute; config.LdapSettings.SyncIntervalMinutes = this.parseIntNonZero(this.state.syncIntervalMinutes); config.LdapSettings.SkipCertificateVerification = this.state.skipCertificateVerification; config.LdapSettings.QueryTimeout = this.parseIntNonZero(this.state.queryTimeout); config.LdapSettings.MaxPageSize = this.parseInt(this.state.maxPageSize); config.LdapSettings.LoginFieldName = this.state.loginFieldName; return config; } getStateFromConfig(config) { return { enable: config.LdapSettings.Enable, ldapServer: config.LdapSettings.LdapServer, ldapPort: config.LdapSettings.LdapPort, connectionSecurity: config.LdapSettings.ConnectionSecurity, baseDN: config.LdapSettings.BaseDN, bindUsername: config.LdapSettings.BindUsername, bindPassword: config.LdapSettings.BindPassword, userFilter: config.LdapSettings.UserFilter, firstNameAttribute: config.LdapSettings.FirstNameAttribute, lastNameAttribute: config.LdapSettings.LastNameAttribute, nicknameAttribute: config.LdapSettings.NicknameAttribute, emailAttribute: config.LdapSettings.EmailAttribute, usernameAttribute: config.LdapSettings.UsernameAttribute, positionAttribute: config.LdapSettings.PositionAttribute, idAttribute: config.LdapSettings.IdAttribute, syncIntervalMinutes: config.LdapSettings.SyncIntervalMinutes, skipCertificateVerification: config.LdapSettings.SkipCertificateVerification, queryTimeout: config.LdapSettings.QueryTimeout, maxPageSize: config.LdapSettings.MaxPageSize, loginFieldName: config.LdapSettings.LoginFieldName }; } renderTitle() { return ( ); } renderSettings() { const licenseEnabled = global.window.mm_license.IsLicensed === 'true' && global.window.mm_license.LDAP === 'true'; if (!licenseEnabled) { return null; } return ( } helpText={ } value={this.state.enable} onChange={this.handleChange} /> } placeholder={Utils.localizeMessage('admin.ldap.serverEx', 'Ex "10.0.0.23"')} helpText={ } value={this.state.ldapServer} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.portEx', 'Ex "389"')} helpText={ } value={this.state.ldapPort} onChange={this.handleChange} disabled={!this.state.enable} /> } helpText={ } value={this.state.skipCertificateVerification} onChange={this.handleChange} /> } placeholder={Utils.localizeMessage('admin.ldap.baseEx', 'Ex "ou=Unit Name,dc=corp,dc=example,dc=com"')} helpText={ } value={this.state.baseDN} onChange={this.handleChange} disabled={!this.state.enable} /> } helpText={ } value={this.state.bindUsername} onChange={this.handleChange} disabled={!this.state.enable} /> } helpText={ } value={this.state.bindPassword} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.userFilterEx', 'Ex. "(objectClass=user)"')} helpText={ } value={this.state.userFilter} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.firstnameAttrEx', 'Ex "givenName"')} helpText={ } value={this.state.firstNameAttribute} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.lastnameAttrEx', 'Ex "sn"')} helpText={ } value={this.state.lastNameAttribute} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.nicknameAttrEx', 'Ex "nickname"')} helpText={ } value={this.state.nicknameAttribute} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.positionAttrEx', 'E.g.: "title"')} helpText={ } value={this.state.positionAttribute} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.emailAttrEx', 'Ex "mail" or "userPrincipalName"')} helpText={ } value={this.state.emailAttribute} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.usernameAttrEx', 'Ex "sAMAccountName"')} helpText={ } value={this.state.usernameAttribute} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.idAttrEx', 'Ex "sAMAccountName"')} helpText={ } value={this.state.idAttribute} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.loginNameEx', 'Ex "AD/LDAP Username"')} helpText={ } value={this.state.loginFieldName} onChange={this.handleChange} disabled={!this.state.enable} /> } helpText={ } value={this.state.syncIntervalMinutes} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.maxPageSizeEx', 'Ex "2000"')} helpText={ } value={this.state.maxPageSize} onChange={this.handleChange} disabled={!this.state.enable} /> } placeholder={Utils.localizeMessage('admin.ldap.queryEx', 'Ex "60"')} helpText={ } value={this.state.queryTimeout} onChange={this.handleChange} disabled={!this.state.enable} /> ); } }