package auth import ( "errors" "unicode/utf8" "golang.org/x/crypto/bcrypt" ) const ( minPasswordLen = 8 bcryptCost = 12 ) var ErrInvalidCredentials = errors.New("неверный email или пароль") func HashPassword(password string) (string, error) { if utf8.RuneCountInString(password) < minPasswordLen { return "", errors.New("пароль должен быть не короче 8 символов") } b, err := bcrypt.GenerateFromPassword([]byte(password), bcryptCost) return string(b), err } func CheckPassword(hash, password string) bool { return bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) == nil }