Files
efir-api-server/internal/pkg/validator/validator.go

52 lines
1.5 KiB
Go

package validator
import (
"regexp"
"strings"
"unicode"
)
// ValidateLogin проверяет логин (только буквы, цифры, underscore, от 3 до 32 символов)
func ValidateLogin(login string) bool {
if len(login) < 3 || len(login) > 32 {
return false
}
matched, _ := regexp.MatchString("^[a-zA-Z0-9_]+$", login)
return matched
}
// ValidatePassword проверяет пароль (минимум 6 символов)
func ValidatePassword(password string) bool {
return len(password) >= 6
}
// SanitizeString очищает строку от лишних пробелов
func SanitizeString(s string) string {
return strings.TrimSpace(s)
}
// ValidateDisplayName проверяет отображаемое имя (не более 100 символов)
func ValidateDisplayName(name string) bool {
return len(name) <= 100
}
// ValidateBio проверяет биографию (не более 500 символов)
func ValidateBio(bio string) bool {
return len(bio) <= 500
}
// IsValidUUID проверяет валидность UUID
func IsValidUUID(uuid string) bool {
matched, _ := regexp.MatchString("^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", uuid)
return matched
}
// ContainsOnlyPrintable проверяет, что строка содержит только печатаемые символы
func ContainsOnlyPrintable(s string) bool {
for _, r := range s {
if !unicode.IsPrint(r) {
return false
}
}
return true
}