From b3b46a01aae85594b9b3d2d8872d33d6812492a6 Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Tue, 31 Oct 2017 08:37:34 -0700 Subject: PLT-5813 support SAML sync via LDAP (#7668) * PLT-5813 support SAML sync via LDAP * Cleaning up based on review --- app/ldap.go | 3 ++- config/default.json | 1 + einterfaces/ldap.go | 2 +- jobs/workers.go | 8 ++++---- model/config.go | 16 +++++++++++++++- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/ldap.go b/app/ldap.go index bb49349de..3d4c23a6c 100644 --- a/app/ldap.go +++ b/app/ldap.go @@ -13,7 +13,8 @@ import ( func (a *App) SyncLdap() { a.Go(func() { - if utils.IsLicensed() && *utils.License().Features.LDAP && *a.Config().LdapSettings.Enable { + + if utils.IsLicensed() && *utils.License().Features.LDAP && *a.Config().LdapSettings.EnableSync { if ldapI := a.Ldap; ldapI != nil { ldapI.StartSynchronizeJob(false) } else { diff --git a/config/default.json b/config/default.json index d0688f765..ebfa9eb02 100644 --- a/config/default.json +++ b/config/default.json @@ -223,6 +223,7 @@ }, "LdapSettings": { "Enable": false, + "EnableSync": false, "LdapServer": "", "LdapPort": 389, "ConnectionSecurity": "", diff --git a/einterfaces/ldap.go b/einterfaces/ldap.go index 1505a41ce..26326b174 100644 --- a/einterfaces/ldap.go +++ b/einterfaces/ldap.go @@ -21,5 +21,5 @@ type LdapInterface interface { GetAllLdapUsers() ([]*model.User, *model.AppError) UserFromLdapUser(ldapUser *ldap.Entry) *model.User UserHasUpdateFromLdap(existingUser *model.User, currentLdapUser *model.User) bool - UpdateLdapUser(existingUser *model.User, currentLdapUser *model.User) *model.User + UpdateLocalLdapUser(existingUser *model.User, currentLdapUser *model.User) *model.User } diff --git a/jobs/workers.go b/jobs/workers.go index 415553981..b1d275658 100644 --- a/jobs/workers.go +++ b/jobs/workers.go @@ -65,7 +65,7 @@ func (workers *Workers) Start() *Workers { go workers.ElasticsearchAggregation.Run() } - if workers.LdapSync != nil && *workers.Config().LdapSettings.Enable { + if workers.LdapSync != nil && *workers.Config().LdapSettings.EnableSync { go workers.LdapSync.Run() } @@ -103,9 +103,9 @@ func (workers *Workers) handleConfigChange(oldConfig *model.Config, newConfig *m } if workers.LdapSync != nil { - if !*oldConfig.LdapSettings.Enable && *newConfig.LdapSettings.Enable { + if !*oldConfig.LdapSettings.EnableSync && *newConfig.LdapSettings.EnableSync { go workers.LdapSync.Run() - } else if *oldConfig.LdapSettings.Enable && !*newConfig.LdapSettings.Enable { + } else if *oldConfig.LdapSettings.EnableSync && !*newConfig.LdapSettings.EnableSync { workers.LdapSync.Stop() } } @@ -128,7 +128,7 @@ func (workers *Workers) Stop() *Workers { workers.ElasticsearchAggregation.Stop() } - if workers.LdapSync != nil && *workers.Config().LdapSettings.Enable { + if workers.LdapSync != nil && *workers.Config().LdapSettings.EnableSync { workers.LdapSync.Stop() } diff --git a/model/config.go b/model/config.go index 17b7e87e6..ae62626de 100644 --- a/model/config.go +++ b/model/config.go @@ -394,6 +394,7 @@ type ClientRequirements struct { type LdapSettings struct { // Basic Enable *bool + EnableSync *bool LdapServer *string LdapPort *int ConnectionSecurity *string @@ -439,7 +440,9 @@ type LocalizationSettings struct { type SamlSettings struct { // Basic - Enable *bool + Enable *bool + EnableSyncWithLdap *bool + Verify *bool Encrypt *bool @@ -987,6 +990,12 @@ func (o *Config) SetDefaults() { o.LdapSettings.Enable = NewBool(false) } + // When unset should default to LDAP Enabled + if o.LdapSettings.EnableSync == nil { + o.LdapSettings.EnableSync = new(bool) + *o.LdapSettings.EnableSync = *o.LdapSettings.Enable + } + if o.LdapSettings.LdapServer == nil { o.LdapSettings.LdapServer = NewString("") } @@ -1209,6 +1218,11 @@ func (o *Config) SetDefaults() { o.SamlSettings.Enable = NewBool(false) } + if o.SamlSettings.EnableSyncWithLdap == nil { + o.SamlSettings.EnableSyncWithLdap = new(bool) + *o.SamlSettings.EnableSyncWithLdap = false + } + if o.SamlSettings.Verify == nil { o.SamlSettings.Verify = NewBool(true) } -- cgit v1.2.3-1-g7c22