This repository has been archived on 2025-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
miniauthold/vendor/github.com/go-passwd/validator
kekskurse 7b5df08e45
All checks were successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/playwright Pipeline was successful
ci/woodpecker/push/deplyoment Pipeline was successful
chore: password validation
2025-03-13 21:12:16 +01:00
..
.editorconfig chore: password validation 2025-03-13 21:12:16 +01:00
.gitignore chore: password validation 2025-03-13 21:12:16 +01:00
.travis.yml chore: password validation 2025-03-13 21:12:16 +01:00
common_password.go chore: password validation 2025-03-13 21:12:16 +01:00
contains_at_least.go chore: password validation 2025-03-13 21:12:16 +01:00
contains_only.go chore: password validation 2025-03-13 21:12:16 +01:00
doc.go chore: password validation 2025-03-13 21:12:16 +01:00
LICENSE chore: password validation 2025-03-13 21:12:16 +01:00
Makefile chore: password validation 2025-03-13 21:12:16 +01:00
max_length.go chore: password validation 2025-03-13 21:12:16 +01:00
min_length.go chore: password validation 2025-03-13 21:12:16 +01:00
noop.go chore: password validation 2025-03-13 21:12:16 +01:00
README.md chore: password validation 2025-03-13 21:12:16 +01:00
regex.go chore: password validation 2025-03-13 21:12:16 +01:00
similarity.go chore: password validation 2025-03-13 21:12:16 +01:00
starts_with.go chore: password validation 2025-03-13 21:12:16 +01:00
TODO.md chore: password validation 2025-03-13 21:12:16 +01:00
unique.go chore: password validation 2025-03-13 21:12:16 +01:00
validate_func.go chore: password validation 2025-03-13 21:12:16 +01:00
validator.go chore: password validation 2025-03-13 21:12:16 +01:00

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))