From 5dfa4fb62979ab9d4eba3c33a29397fe10f7cbc3 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 4 Jul 2016 07:04:02 -0400 Subject: Adding page size option to LDAP (#3439) --- i18n/en.json | 8 ++++++++ model/config.go | 10 ++++++++++ webapp/components/admin_console/ldap_settings.jsx | 21 +++++++++++++++++++++ webapp/i18n/en.json | 3 +++ 4 files changed, 42 insertions(+) diff --git a/i18n/en.json b/i18n/en.json index cfc82f856..3d433dae9 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -2531,6 +2531,14 @@ "id": "model.config.is_valid.ldap_sync_interval.app_error", "translation": "Invalid sync interval time. Must be at least one minute." }, + { + "id": "model.config.is_valid.ldap_required.app_error", + "translation": "Required LDAP field missing." + }, + { + "id": "model.config.is_valid.ldap_max_page_size.app_error", + "translation": "Invalid max page size value." + }, { "id": "model.config.is_valid.listen_address.app_error", "translation": "Invalid listen address for service settings Must be set." diff --git a/model/config.go b/model/config.go index 1d9e078b6..e71a58a21 100644 --- a/model/config.go +++ b/model/config.go @@ -208,6 +208,7 @@ type LdapSettings struct { // Advanced SkipCertificateVerification *bool QueryTimeout *int + MaxPageSize *int // Customization LoginFieldName *string @@ -526,6 +527,11 @@ func (o *Config) SetDefaults() { *o.LdapSettings.QueryTimeout = 60 } + if o.LdapSettings.MaxPageSize == nil { + o.LdapSettings.MaxPageSize = new(int) + *o.LdapSettings.MaxPageSize = 0 + } + if o.LdapSettings.LoginFieldName == nil { o.LdapSettings.LoginFieldName = new(string) *o.LdapSettings.LoginFieldName = "" @@ -724,6 +730,10 @@ func (o *Config) IsValid() *AppError { return NewLocAppError("Config.IsValid", "model.config.is_valid.ldap_sync_interval.app_error", nil, "") } + if *o.LdapSettings.MaxPageSize < 0 { + return NewLocAppError("Config.IsValid", "model.config.is_valid.ldap_max_page_size.app_error", nil, "") + } + if *o.LdapSettings.Enable { if *o.LdapSettings.LdapServer == "" || *o.LdapSettings.BaseDN == "" || diff --git a/webapp/components/admin_console/ldap_settings.jsx b/webapp/components/admin_console/ldap_settings.jsx index d362f1020..53b3d23e6 100644 --- a/webapp/components/admin_console/ldap_settings.jsx +++ b/webapp/components/admin_console/ldap_settings.jsx @@ -38,6 +38,7 @@ export default class LdapSettings extends AdminSettings { 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 }); } @@ -60,6 +61,7 @@ export default class LdapSettings extends AdminSettings { 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; @@ -386,6 +388,25 @@ export default class LdapSettings extends AdminSettings { 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} + />