36 lines
779 B
Go
36 lines
779 B
Go
package security
|
||
|
||
import (
|
||
"errors"
|
||
"regexp"
|
||
"strings"
|
||
)
|
||
|
||
var (
|
||
reUpper = regexp.MustCompile(`[A-Z]`)
|
||
reLower = regexp.MustCompile(`[a-z]`)
|
||
reDigit = regexp.MustCompile(`[0-9]`)
|
||
reSpecial = regexp.MustCompile(`[^A-Za-z0-9]`)
|
||
)
|
||
|
||
func ValidatePassword(pw string) error {
|
||
pw = strings.TrimSpace(pw)
|
||
|
||
if len(pw) < 8 {
|
||
return errors.New("Parola en az 8 karakter olmalı")
|
||
}
|
||
if !reUpper.MatchString(pw) {
|
||
return errors.New("Parola en az 1 büyük harf içermeli")
|
||
}
|
||
if !reLower.MatchString(pw) {
|
||
return errors.New("Parola en az 1 küçük harf içermeli")
|
||
}
|
||
if !reDigit.MatchString(pw) {
|
||
return errors.New("Parola en az 1 rakam içermeli")
|
||
}
|
||
if !reSpecial.MatchString(pw) {
|
||
return errors.New("Parola en az 1 özel karakter içermeli")
|
||
}
|
||
return nil
|
||
}
|