From 683f7133190aa350cdd1ea2608c90fe5f47b35cd Mon Sep 17 00:00:00 2001 From: David Lu Date: Wed, 6 Jul 2016 18:54:54 -0400 Subject: PLT-1465 Added password requirements (#3489) * Added password requirements * added tweaks * fixed error code * removed http.StatusNotAcceptable --- model/config.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'model/config.go') diff --git a/model/config.go b/model/config.go index d86ff75b4..3a0d7f976 100644 --- a/model/config.go +++ b/model/config.go @@ -19,6 +19,9 @@ const ( DATABASE_DRIVER_MYSQL = "mysql" DATABASE_DRIVER_POSTGRES = "postgres" + PASSWORD_MAXIMUM_LENGTH = 64 + PASSWORD_MINIMUM_LENGTH = 5 + SERVICE_GITLAB = "gitlab" SERVICE_GOOGLE = "google" @@ -102,6 +105,14 @@ type LogSettings struct { EnableWebhookDebugging bool } +type PasswordSettings struct { + MinimumLength *int + Lowercase *bool + Number *bool + Uppercase *bool + Symbol *bool +} + type FileSettings struct { MaxFileSize *int64 DriverName string @@ -259,6 +270,7 @@ type Config struct { TeamSettings TeamSettings SqlSettings SqlSettings LogSettings LogSettings + PasswordSettings PasswordSettings FileSettings FileSettings EmailSettings EmailSettings RateLimitSettings RateLimitSettings @@ -356,6 +368,31 @@ func (o *Config) SetDefaults() { *o.ServiceSettings.EnableMultifactorAuthentication = false } + if o.PasswordSettings.MinimumLength == nil { + o.PasswordSettings.MinimumLength = new(int) + *o.PasswordSettings.MinimumLength = PASSWORD_MINIMUM_LENGTH + } + + if o.PasswordSettings.Lowercase == nil { + o.PasswordSettings.Lowercase = new(bool) + *o.PasswordSettings.Lowercase = false + } + + if o.PasswordSettings.Number == nil { + o.PasswordSettings.Number = new(bool) + *o.PasswordSettings.Number = false + } + + if o.PasswordSettings.Uppercase == nil { + o.PasswordSettings.Uppercase = new(bool) + *o.PasswordSettings.Uppercase = false + } + + if o.PasswordSettings.Symbol == nil { + o.PasswordSettings.Symbol = new(bool) + *o.PasswordSettings.Symbol = false + } + if o.TeamSettings.RestrictTeamNames == nil { o.TeamSettings.RestrictTeamNames = new(bool) *o.TeamSettings.RestrictTeamNames = true @@ -919,6 +956,10 @@ func (o *Config) IsValid() *AppError { } } + if *o.PasswordSettings.MinimumLength < PASSWORD_MINIMUM_LENGTH || *o.PasswordSettings.MinimumLength > PASSWORD_MAXIMUM_LENGTH { + return NewLocAppError("Config.IsValid", "model.config.is_valid.password_length.app_error", map[string]interface{}{"MinLength": PASSWORD_MINIMUM_LENGTH, "MaxLength": PASSWORD_MAXIMUM_LENGTH}, "") + } + return nil } -- cgit v1.2.3-1-g7c22