From 70a118c0fd45f8ab2510c80a0110f24be21f8785 Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Wed, 23 May 2018 20:36:20 +0800 Subject: remove license check when enforcing password requirements (#8840) Signed-off-by: Saturnino Abril --- app/authentication.go | 5 +---- model/license.go | 6 ------ model/license_test.go | 5 ----- utils/config.go | 13 +++++-------- utils/license.go | 1 - 5 files changed, 6 insertions(+), 24 deletions(-) diff --git a/app/authentication.go b/app/authentication.go index 5c91f8038..087a9b230 100644 --- a/app/authentication.go +++ b/app/authentication.go @@ -36,10 +36,7 @@ func (tl TokenLocation) String() string { } func (a *App) IsPasswordValid(password string) *model.AppError { - if license := a.License(); license != nil && *license.Features.PasswordRequirements { - return utils.IsPasswordValidWithSettings(password, &a.Config().PasswordSettings) - } - return utils.IsPasswordValid(password) + return utils.IsPasswordValidWithSettings(password, &a.Config().PasswordSettings) } func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError { diff --git a/model/license.go b/model/license.go index 942a18d55..b69c13c54 100644 --- a/model/license.go +++ b/model/license.go @@ -49,7 +49,6 @@ type Features struct { CustomBrand *bool `json:"custom_brand"` MHPNS *bool `json:"mhpns"` SAML *bool `json:"saml"` - PasswordRequirements *bool `json:"password_requirements"` Elasticsearch *bool `json:"elastic_search"` Announcement *bool `json:"announcement"` ThemeManagement *bool `json:"theme_management"` @@ -73,7 +72,6 @@ func (f *Features) ToMap() map[string]interface{} { "custom_brand": *f.CustomBrand, "mhpns": *f.MHPNS, "saml": *f.SAML, - "password": *f.PasswordRequirements, "elastic_search": *f.Elasticsearch, "email_notification_contents": *f.EmailNotificationContents, "data_retention": *f.DataRetention, @@ -131,10 +129,6 @@ func (f *Features) SetDefaults() { f.SAML = NewBool(*f.FutureFeatures) } - if f.PasswordRequirements == nil { - f.PasswordRequirements = NewBool(*f.FutureFeatures) - } - if f.Elasticsearch == nil { f.Elasticsearch = NewBool(*f.FutureFeatures) } diff --git a/model/license_test.go b/model/license_test.go index f953d47b3..4b40c4101 100644 --- a/model/license_test.go +++ b/model/license_test.go @@ -24,7 +24,6 @@ func TestLicenseFeaturesToMap(t *testing.T) { CheckTrue(t, m["custom_brand"].(bool)) CheckTrue(t, m["mhpns"].(bool)) CheckTrue(t, m["saml"].(bool)) - CheckTrue(t, m["password"].(bool)) CheckTrue(t, m["elastic_search"].(bool)) CheckTrue(t, m["email_notification_contents"].(bool)) CheckTrue(t, m["data_retention"].(bool)) @@ -46,7 +45,6 @@ func TestLicenseFeaturesSetDefaults(t *testing.T) { CheckTrue(t, *f.CustomBrand) CheckTrue(t, *f.MHPNS) CheckTrue(t, *f.SAML) - CheckTrue(t, *f.PasswordRequirements) CheckTrue(t, *f.Elasticsearch) CheckTrue(t, *f.EmailNotificationContents) CheckTrue(t, *f.DataRetention) @@ -67,7 +65,6 @@ func TestLicenseFeaturesSetDefaults(t *testing.T) { *f.CustomBrand = true *f.MHPNS = true *f.SAML = true - *f.PasswordRequirements = true *f.Elasticsearch = true *f.DataRetention = true *f.EmailNotificationContents = true @@ -85,7 +82,6 @@ func TestLicenseFeaturesSetDefaults(t *testing.T) { CheckTrue(t, *f.CustomBrand) CheckTrue(t, *f.MHPNS) CheckTrue(t, *f.SAML) - CheckTrue(t, *f.PasswordRequirements) CheckTrue(t, *f.Elasticsearch) CheckTrue(t, *f.EmailNotificationContents) CheckTrue(t, *f.DataRetention) @@ -168,7 +164,6 @@ func TestLicenseToFromJson(t *testing.T) { CheckBool(t, *f1.CustomBrand, *f.CustomBrand) CheckBool(t, *f1.MHPNS, *f.MHPNS) CheckBool(t, *f1.SAML, *f.SAML) - CheckBool(t, *f1.PasswordRequirements, *f.PasswordRequirements) CheckBool(t, *f1.Elasticsearch, *f.Elasticsearch) CheckBool(t, *f1.DataRetention, *f.DataRetention) CheckBool(t, *f1.FutureFeatures, *f.FutureFeatures) diff --git a/utils/config.go b/utils/config.go index dd782c0fc..18e25c999 100644 --- a/utils/config.go +++ b/utils/config.go @@ -602,6 +602,11 @@ func GenerateClientConfig(c *model.Config, diagnosticId string, license *model.L props["DataRetentionMessageRetentionDays"] = "0" props["DataRetentionEnableFileDeletion"] = "false" props["DataRetentionFileRetentionDays"] = "0" + props["PasswordMinimumLength"] = fmt.Sprintf("%v", *c.PasswordSettings.MinimumLength) + props["PasswordRequireLowercase"] = strconv.FormatBool(*c.PasswordSettings.Lowercase) + props["PasswordRequireUppercase"] = strconv.FormatBool(*c.PasswordSettings.Uppercase) + props["PasswordRequireNumber"] = strconv.FormatBool(*c.PasswordSettings.Number) + props["PasswordRequireSymbol"] = strconv.FormatBool(*c.PasswordSettings.Symbol) if license != nil { props["ExperimentalTownSquareIsReadOnly"] = strconv.FormatBool(*c.TeamSettings.ExperimentalTownSquareIsReadOnly) @@ -662,14 +667,6 @@ func GenerateClientConfig(c *model.Config, diagnosticId string, license *model.L props["EnableSignUpWithOffice365"] = strconv.FormatBool(c.Office365Settings.Enable) } - if *license.Features.PasswordRequirements { - props["PasswordMinimumLength"] = fmt.Sprintf("%v", *c.PasswordSettings.MinimumLength) - props["PasswordRequireLowercase"] = strconv.FormatBool(*c.PasswordSettings.Lowercase) - props["PasswordRequireUppercase"] = strconv.FormatBool(*c.PasswordSettings.Uppercase) - props["PasswordRequireNumber"] = strconv.FormatBool(*c.PasswordSettings.Number) - props["PasswordRequireSymbol"] = strconv.FormatBool(*c.PasswordSettings.Symbol) - } - if *license.Features.Announcement { props["EnableBanner"] = strconv.FormatBool(*c.AnnouncementSettings.EnableBanner) props["BannerText"] = *c.AnnouncementSettings.BannerText diff --git a/utils/license.go b/utils/license.go index aa89026ea..832d41557 100644 --- a/utils/license.go +++ b/utils/license.go @@ -139,7 +139,6 @@ func GetClientLicense(l *model.License) map[string]string { props["Compliance"] = strconv.FormatBool(*l.Features.Compliance) props["CustomBrand"] = strconv.FormatBool(*l.Features.CustomBrand) props["MHPNS"] = strconv.FormatBool(*l.Features.MHPNS) - props["PasswordRequirements"] = strconv.FormatBool(*l.Features.PasswordRequirements) props["Announcement"] = strconv.FormatBool(*l.Features.Announcement) props["Elasticsearch"] = strconv.FormatBool(*l.Features.Elasticsearch) props["DataRetention"] = strconv.FormatBool(*l.Features.DataRetention) -- cgit v1.2.3-1-g7c22