summaryrefslogtreecommitdiffstats
path: root/model/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'model/config.go')
-rw-r--r--model/config.go41
1 files changed, 41 insertions, 0 deletions
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
}