README
Password validator library for Go
Installation
go get -u github.com/go-passwd/validator
Usage
import "github.com/go-passwd/validator"
passwordValidator := validator.New(validator.MinLength(5, nil), validator.MaxLength(10, nil))
err := passwordValidator.Validate(form.Password)
if err != nil {
panic(err)
}
You can pass to every validator functions customError
parameter witch will be returned on error instead of default error.
import "github.com/go-passwd/validator"
passwordValidator := validator.New(validator.MinLength(5, errors.New("too short")), validator.MaxLength(10, errors.New("too long")))
err := passwordValidator.Validate(form.Password)
if err != nil {
panic(err)
}
Validators
CommonPassword
Check if password is a common password.
Common password list is based on list created by Mark Burnett: https://xato.net/passwords/more-top-worst-passwords/
passwordValidator := validator.New(validator.CommonPassword(nil))
ContainsAtLeast
Count occurrences of a chars and compares it with required value.
passwordValidator := validator.New(validator.ContainsAtLeast(5, "abcdefghijklmnopqrstuvwxyz", nil))
ContainsOnly
Check if password contains only selected chars.
passwordValidator := validator.New(validator.ContainsOnly("abcdefghijklmnopqrstuvwxyz", nil))
MaxLength
Check if password length is not greater that defined length.
passwordValidator := validator.New(validator.MaxLength(10, nil))
MinLength
Check if password length is not lower that defined length.
passwordValidator := validator.New(validator.MinLength(5, nil))
Noop
Always return custom error.
passwordValidator := validator.New(validator.Noop(nil))
Regex
Check if password match regexp pattern.
passwordValidator := validator.New(validator.Regex("^\\w+$", nil))
Similarity
Check if password is sufficiently different from the attributes.
Attributes can be: user login, email, first name, last name, …
passwordValidator := validator.New(validator.Similarity([]string{"username", "username@example.com"}, nil, nil))
StartsWith
Check if password starts with one of letter.
passwordValidator := validator.New(validator.StartsWith("abcdefghijklmnopqrstuvwxyz", nil))
Unique
Check if password contains only unique chars.
passwordValidator := validator.New(validator.Unique(nil))
Documentation
Overview ¶
Package validator is a set of functions to validate passwords
Index ¶
- type ValidateFunc
- func CommonPassword(customError error) ValidateFunc
- func ContainsAtLeast(chars string, occurrences int, customError error) ValidateFunc
- func ContainsOnly(chars string, customError error) ValidateFunc
- func MaxLength(length int, customError error) ValidateFunc
- func MinLength(length int, customError error) ValidateFunc
- func Noop(customError error) ValidateFunc
- func Regex(pattern string, customError error) ValidateFunc
- func Similarity(attributes []string, maxSimilarity *float64, customError error) ValidateFunc
- func StartsWith(letters string, customError error) ValidateFunc
- func Unique(customError error) ValidateFunc
- type Validator
Examples ¶
- CommonPassword
- CommonPassword (CustomError)
- ContainsAtLeast
- ContainsAtLeast (CustomError)
- ContainsOnly
- ContainsOnly (CustomError)
- MaxLength
- MaxLength (CustomError)
- MinLength
- MinLength (CustomError)
- New
- Noop
- Noop (CustomError)
- Regex
- Regex (CustomError)
- Similarity
- Similarity (CustomError)
- StartsWith
- StartsWith (CustomError)
- Unique
- Unique (CustomError)
- Validator.Validate
Constants ¶
Variables ¶
Functions ¶
Types ¶
type ValidateFunc ¶
ValidateFunc defines a function to validate
func CommonPassword ¶
func CommonPassword(customError error) ValidateFunc
CommonPassword returns ValidateFunc that validate whether the password is a common password.
The password is rejected if it occurs in a provided list created by Mark Burnett: https://xato.net/passwords/more-top-worst-passwords/
Example ¶
Output: Password can't be a commonly used password Password can't be a commonly used password <nil>
Example (CustomError) ¶
Output: custom error message
func ContainsAtLeast ¶
func ContainsAtLeast(chars string, occurrences int, customError error) ValidateFunc
ContainsAtLeast returns a ValidateFunc that count occurrences of a chars and compares it with required value
Example ¶
Output: <nil> Password must contains at least 4 chars from abcdefghijklmnopqrstuvwxyz <nil>
Example (CustomError) ¶
Output: custom error message
func ContainsOnly ¶
func ContainsOnly(chars string, customError error) ValidateFunc
ContainsOnly returns a ValidateFunc that check if password contains only selected chars
Example ¶
Output: <nil> the password must contains only abcdefghijklmnopqrstuvwxyz the password must contains only abcdefghijklmnopqrstuvwxyz
Example (CustomError) ¶
Output: <nil> custom error message custom error message
func MaxLength ¶
func MaxLength(length int, customError error) ValidateFunc
MaxLength returns a ValidateFunc that check if password length is not greater that "length"
Example ¶
Output: Password length must be not greater that 5 chars <nil> <nil>
Example (CustomError) ¶
Output: custom error message
func MinLength ¶
func MinLength(length int, customError error) ValidateFunc
MinLength returns a ValidateFunc that check if password length is not lower that "length"
Example ¶
Output: <nil> Password length must be not lower that 5 chars <nil>
Example (CustomError) ¶
Output: custom error message
func Noop ¶
func Noop(customError error) ValidateFunc
Noop returns a ValidateFunc that always return custom error
Example ¶
Output: <nil>
Example (CustomError) ¶
Output: custom error message
func Regex ¶
func Regex(pattern string, customError error) ValidateFunc
Regex returns ValidateFunc that check if password match regexp pattern
Example ¶
Output: Password shouldn't match "^\w+$" pattern <nil>
Example (CustomError) ¶
Output: custom error message
func Similarity ¶
func Similarity(attributes []string, maxSimilarity *float64, customError error) ValidateFunc
Similarity returns ValidateFunc that validate whether the password is sufficiently different from the attributes
Attributes can be: user login, email, first name, last name, …
Example ¶
Output: The password is too similar to the username <nil> The password is too similar to the username The password is too similar to the username@example.com
Example (CustomError) ¶
Output: custom error message
func StartsWith ¶
func StartsWith(letters string, customError error) ValidateFunc
StartsWith returns ValidateFunc that validate whether the password is starts with one of letter
Example ¶
Output: <nil> the password must starts with one of: abc
Example (CustomError) ¶
Output: <nil> custom error message
type Validator ¶
type Validator []ValidateFunc
Validator represents set of password validators
func New ¶
func New(vfunc ...ValidateFunc) *Validator
New return new instance of Validator
Example ¶
Output: