From d1cee022471f43decafc4da0bff7892ff52f0664 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 20 Nov 2017 11:04:04 -0600 Subject: Refactor password validation and config defaults (#7859) * refactor password validation and config defaults * reorder config lines for clarity --- utils/password.go | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'utils/password.go') diff --git a/utils/password.go b/utils/password.go index f64d6f6ab..b24d6c2ec 100644 --- a/utils/password.go +++ b/utils/password.go @@ -11,55 +11,55 @@ import ( ) func IsPasswordValid(password string) *model.AppError { + if len(password) > model.PASSWORD_MAXIMUM_LENGTH || len(password) < model.PASSWORD_MINIMUM_LENGTH { + return model.NewAppError("User.IsValid", "model.user.is_valid.pwd.app_error", map[string]interface{}{"Min": model.PASSWORD_MINIMUM_LENGTH}, "", http.StatusBadRequest) + } + + return nil +} + +func IsPasswordValidWithSettings(password string, settings *model.PasswordSettings) *model.AppError { id := "model.user.is_valid.pwd" isError := false - min := model.PASSWORD_MINIMUM_LENGTH - if IsLicensed() && *License().Features.PasswordRequirements { - if len(password) < *Cfg.PasswordSettings.MinimumLength || len(password) > model.PASSWORD_MAXIMUM_LENGTH { - isError = true - } - - if *Cfg.PasswordSettings.Lowercase { - if !strings.ContainsAny(password, model.LOWERCASE_LETTERS) { - isError = true - } + if len(password) < *settings.MinimumLength || len(password) > model.PASSWORD_MAXIMUM_LENGTH { + isError = true + } - id = id + "_lowercase" + if *settings.Lowercase { + if !strings.ContainsAny(password, model.LOWERCASE_LETTERS) { + isError = true } - if *Cfg.PasswordSettings.Uppercase { - if !strings.ContainsAny(password, model.UPPERCASE_LETTERS) { - isError = true - } + id = id + "_lowercase" + } - id = id + "_uppercase" + if *settings.Uppercase { + if !strings.ContainsAny(password, model.UPPERCASE_LETTERS) { + isError = true } - if *Cfg.PasswordSettings.Number { - if !strings.ContainsAny(password, model.NUMBERS) { - isError = true - } + id = id + "_uppercase" + } - id = id + "_number" + if *settings.Number { + if !strings.ContainsAny(password, model.NUMBERS) { + isError = true } - if *Cfg.PasswordSettings.Symbol { - if !strings.ContainsAny(password, model.SYMBOLS) { - isError = true - } + id = id + "_number" + } - id = id + "_symbol" + if *settings.Symbol { + if !strings.ContainsAny(password, model.SYMBOLS) { + isError = true } - min = *Cfg.PasswordSettings.MinimumLength - } else if len(password) > model.PASSWORD_MAXIMUM_LENGTH || len(password) < model.PASSWORD_MINIMUM_LENGTH { - isError = true - min = model.PASSWORD_MINIMUM_LENGTH + id = id + "_symbol" } if isError { - return model.NewAppError("User.IsValid", id+".app_error", map[string]interface{}{"Min": min}, "", http.StatusBadRequest) + return model.NewAppError("User.IsValid", id+".app_error", map[string]interface{}{"Min": *settings.MinimumLength}, "", http.StatusBadRequest) } return nil -- cgit v1.2.3-1-g7c22