README

Password validator library for Go

Build Status Coverage Status Go Report Card GoDoc

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))
Expand ▾ Collapse ▴

Documentation

Overview

    Package validator is a set of functions to validate passwords

    Index

    Examples

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    This section is empty.

    Types

    type ValidateFunc

    type ValidateFunc func(password string) error

      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
                        

                        func Unique

                        func Unique(customError error) ValidateFunc

                          Unique returns ValidateFunc that validate whether the password has only unique chars

                          Example
                          Output:
                          
                          <nil>
                          the password must contains unique chars
                          
                          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:
                              
                              

                              func (*Validator) Validate

                              func (v *Validator) Validate(password string) error

                                Validate the password

                                Example
                                Output:
                                
                                <nil>
                                <nil>
                                <nil>
                                Password length must be not lower that 5 chars
                                Password length must be not greater that 10 chars