// 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 ConnectionSecurityDropdownSetting from './connection_security_dropdown_setting.jsx'; import SettingsGroup from './settings_group.jsx'; import TextSetting from './text_setting.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); this.state = Object.assign(this.state, { enable: props.config.LdapSettings.Enable, ldapServer: props.config.LdapSettings.LdapServer, ldapPort: props.config.LdapSettings.LdapPort, connectionSecurity: props.config.LdapSettings.ConnectionSecurity, baseDN: props.config.LdapSettings.BaseDN, bindUsername: props.config.LdapSettings.BindUsername, bindPassword: props.config.LdapSettings.BindPassword, userFilter: props.config.LdapSettings.UserFilter, firstNameAttribute: props.config.LdapSettings.FirstNameAttribute, lastNameAttribute: props.config.LdapSettings.LastNameAttribute, nicknameAttribute: props.config.LdapSettings.NicknameAttribute, emailAttribute: props.config.LdapSettings.EmailAttribute, usernameAttribute: props.config.LdapSettings.UsernameAttribute, idAttribute: props.config.LdapSettings.IdAttribute, syncIntervalMinutes: props.config.LdapSettings.SyncIntervalMinutes, skipCertificateVerification: props.config.LdapSettings.SkipCertificateVerification, queryTimeout: props.config.LdapSettings.QueryTimeout, maxPageSize: props.config.LdapSettings.MaxPageSize, loginFieldName: props.config.LdapSettings.LoginFieldName }); } 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.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; } 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} /> } 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.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} /> } helpText={ } value={this.state.syncIntervalMinutes} onChange={this.handleChange} disabled={!this.state.enable} /> } helpText={ } value={this.state.skipCertificateVerification} onChange={this.handleChange} /> } placeholder={Utils.localizeMessage('admin.ldap.queryEx', 'Ex "60"')} helpText={ } value={this.state.queryTimeout} 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.loginNameEx', 'Ex "LDAP Username"')} helpText={ } value={this.state.loginFieldName} onChange={this.handleChange} disabled={!this.state.enable} /> ); } }