Files
old-svijetlastrana/server/validation/user.go
2018-05-16 18:30:59 +02:00

67 lines
2.2 KiB
Go

package validation
import (
"strings"
"bitbucket.org/nemt/nemt-portal-api/application/viewmodel"
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
)
func characterIsUpperCase(character rune) bool {
return (character >= 65) && (character <= 90)
}
func characterIsLowerCase(character rune) bool {
return (character >= 97) && (character <= 122)
}
func characterIsNumber(character rune) bool {
return (character >= 48) && (character <= 57)
}
func ValidatePassword(user *viewmodel.User) []errors.ValidationError {
var result []errors.ValidationError
userOrganizationName := ""
if len(user.Organizations) > 0{
userOrganizationName = user.Organizations[0].Name
}
if (len(user.Pass) < 8) {
result = append(result, errors.ValidationError{Field : "password", Message : "Password must be at least 8 characters."})
}
if (strings.Contains(user.Pass, user.First)){
result = append(result, errors.ValidationError{Field : "password", Message : "Password cannot include your First Name."})
}
if (strings.Contains(user.Pass, user.Last)){
result = append(result, errors.ValidationError{Field : "password", Message : "Password cannot include your Last Name."})
}
if (strings.Contains(user.Pass, userOrganizationName)){
result = append(result, errors.ValidationError{Field : "password", Message : "Password cannot include your Organization Name."})
}
containsUpperCaseLetter := false;
containsLowerCaseLetter := false;
containsNumber := false;
for _, character := range user.Pass {
containsUpperCaseLetter = containsUpperCaseLetter || characterIsUpperCase(character)
containsLowerCaseLetter = containsLowerCaseLetter || characterIsLowerCase(character)
containsNumber = containsNumber || characterIsNumber(character)
}
if !containsUpperCaseLetter || !containsLowerCaseLetter || !containsNumber {
result = append(result, errors.ValidationError{Field : "password", Message : "Password must contain one of EACH :"})
result = append(result, errors.ValidationError{Field : "password-tab", Message : "an uppercase letter"})
result = append(result, errors.ValidationError{Field : "password-tab", Message : "a lowercase letter"})
result = append(result, errors.ValidationError{Field : "password-tab", Message : "a number"})
}
return result
}