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 ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
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 ¶
passwordValidator := CommonPassword(nil) fmt.Println(passwordValidator("password")) fmt.Println(passwordValidator("qaz123")) fmt.Println(passwordValidator("pa$$w0rd@"))
Output: Password can't be a commonly used password Password can't be a commonly used password <nil>
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := CommonPassword(err) fmt.Println(passwordValidator("password"))
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 ¶
passwordValidator := ContainsAtLeast("abcdefghijklmnopqrstuvwxyz", 4, nil) fmt.Println(passwordValidator("password")) fmt.Println(passwordValidator("PASSWORD")) fmt.Println(passwordValidator("passWORD"))
Output: <nil> Password must contains at least 4 chars from abcdefghijklmnopqrstuvwxyz <nil>
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := ContainsAtLeast("abcdefghijklmnopqrstuvwxyz", 4, err) fmt.Println(passwordValidator("PASSWORD"))
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 ¶
passwordValidator := ContainsOnly("abcdefghijklmnopqrstuvwxyz", nil) fmt.Println(passwordValidator("password")) fmt.Println(passwordValidator("password0")) fmt.Println(passwordValidator("passWORD"))
Output: <nil> the password must contains only abcdefghijklmnopqrstuvwxyz the password must contains only abcdefghijklmnopqrstuvwxyz
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := ContainsOnly("abcdefghijklmnopqrstuvwxyz", err) fmt.Println(passwordValidator("password")) fmt.Println(passwordValidator("password0")) fmt.Println(passwordValidator("passWORD"))
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 ¶
passwordValidator := MaxLength(5, nil) fmt.Println(passwordValidator("password")) fmt.Println(passwordValidator("pass")) fmt.Println(passwordValidator("passw"))
Output: Password length must be not greater that 5 chars <nil> <nil>
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := MaxLength(5, err) fmt.Println(passwordValidator("password"))
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 ¶
passwordValidator := MinLength(5, nil) fmt.Println(passwordValidator("password")) fmt.Println(passwordValidator("pass")) fmt.Println(passwordValidator("passw"))
Output: <nil> Password length must be not lower that 5 chars <nil>
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := MinLength(5, err) fmt.Println(passwordValidator("pass"))
Output: custom error message
func Noop ¶
func Noop(customError error) ValidateFunc
Noop returns a ValidateFunc that always return custom error
Example ¶
passwordValidator := Noop(nil) fmt.Println(passwordValidator("password"))
Output: <nil>
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := Noop(err) fmt.Println(passwordValidator("password"))
Output: custom error message
func Regex ¶
func Regex(pattern string, customError error) ValidateFunc
Regex returns ValidateFunc that check if password match regexp pattern
Example ¶
passwordValidator := Regex("^\\w+$", nil) fmt.Println(passwordValidator("password")) fmt.Println(passwordValidator("pa$$w0rd"))
Output: Password shouldn't match "^\w+$" pattern <nil>
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := Regex("^\\w+$", err) fmt.Println(passwordValidator("password"))
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 ¶
passwordValidator := Similarity([]string{"username", "username@example.com"}, nil, nil) fmt.Println(passwordValidator("username")) fmt.Println(passwordValidator("example")) similarity := 0.5 passwordValidator = Similarity([]string{"username", "username@example.com"}, &similarity, nil) fmt.Println(passwordValidator("username")) fmt.Println(passwordValidator("examplecom"))
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) ¶
err := errors.New("custom error message") passwordValidator := Similarity([]string{"username", "username@example.com"}, nil, err) fmt.Println(passwordValidator("username"))
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 ¶
passwordValidator := StartsWith("abc", nil) fmt.Println(passwordValidator("bui87j")) fmt.Println(passwordValidator("qwerty"))
Output: <nil> the password must starts with one of: abc
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := StartsWith("abc", err) fmt.Println(passwordValidator("bui87j")) fmt.Println(passwordValidator("qwerty"))
Output: <nil> custom error message
func Unique ¶
func Unique(customError error) ValidateFunc
Unique returns ValidateFunc that validate whether the password has only unique chars
Example ¶
passwordValidator := Unique(nil) fmt.Println(passwordValidator("bui87j")) fmt.Println(passwordValidator("qwerte"))
Output: <nil> the password must contains unique chars
Example (CustomError) ¶
err := errors.New("custom error message") passwordValidator := Unique(err) fmt.Println(passwordValidator("bui87j")) fmt.Println(passwordValidator("qwerte"))
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 ¶
New(MinLength(5, nil), MaxLength(10, nil))
Output:
func (*Validator) Validate ¶
Validate the password
Example ¶
passwordValidator := Validator{MinLength(5, nil), MaxLength(10, nil)} fmt.Println(passwordValidator.Validate("password")) fmt.Println(passwordValidator.Validate("pass1")) fmt.Println(passwordValidator.Validate("password12")) fmt.Println(passwordValidator.Validate("pass")) fmt.Println(passwordValidator.Validate("password123"))
Output: <nil> <nil> <nil> Password length must be not lower that 5 chars Password length must be not greater that 10 chars