@samofprog/nestjs-password-validator
TypeScript icon, indicating that this package has built-in type declarations

1.1.0-beta.1 • Public • Published

Password Validator for NestJS

A customizable password validation library for NestJS with support for custom rules, blacklist, and optional password confirmation.


CI Coverage NPM Version Install Size License


Features 🎯

Feature Description
Length Validation 🔢 Enforce minimum and maximum password length.
Blacklist Support 🚫 Prevent the use of specific blacklisted passwords.
Uppercase Check 🔠 Ensure passwords contain at least one uppercase letter.
Lowercase Check 🔡 Ensure passwords contain at least one lowercase letter.
Number Check 🔢 Ensure passwords contain at least one number.
Special Character Check Ensure passwords include special characters, with customizable allowed characters.
Confirm Password 🔒 Validate password confirmation against a separate field.

Installation ⚙️

npm install @samofprog/nestjs-password-validator
# or
yarn add @samofprog/nestjs-password-validator

Usage 📚

Basic Usage with @IsPassword

import { IsPassword } from '@samofprog/nestjs-password-validator';

class CreateUserDto {
  @IsPassword({
    minLength: { enabled: true, length: 8 },
    hasUpperCase: { enabled: true },
    hasLowerCase: { enabled: true },
    hasNumbers: { enabled: true },
    hasSpecialChars: { enabled: true },
    blacklist: { enabled: true, values: ['password', '12345678'] },
  })
  password: string;
}

// or

class CreateUserDto {
  @IsPassword()
  password: string;
}

Basic Usage with Individual Decorators

import {
  PasswordMinLength,
  PasswordMaxLength,
  PasswordHasUpperCase,
  PasswordHasLowerCase,
  PasswordHasNumbers,
  PasswordHasSpecialChars,
  PasswordBlacklist,
  ConfirmPassword,
} from '@samofprog/nestjs-password-validator';

class CreateUserDto {
  @PasswordMinLength({length:8})
  @PasswordMaxLength({length:15})
  @PasswordHasUpperCase()
  @PasswordHasLowerCase()
  @PasswordHasNumbers()
  @PasswordHasSpecialChars()
  @PasswordBlacklist({values:['password', '12345678']})
  password: string;
}

Confirm Password Example

class RegisterDto {
  @PasswordMinLength(8)
  @ConfirmPassword({ compareToProperty: 'confirmPassword' })
  password: string;

  confirmPassword: string;
}

Configuration Options ⚡️

Option Type Description
PasswordMinLength objet Minimum password length.
PasswordMaxLength objet Maximum password length.
PasswordHasUpperCase objet Check for at least one uppercase letter.
PasswordHasLowerCase objet Check for at least one lowercase letter.
PasswordHasNumbers objet Check for at least one number.
PasswordHasSpecialChars objet Check for at least one special character.
PasswordBlacklist objet Disallow specific blacklisted passwords.
ConfirmPassword objet Validate that the password matches a confirmation field.

Example Validation Messages 🔔

Rule Default Message
Blacklist Password is blacklisted.
Uppercase Password must have at least one uppercase letter.
Lowercase Password must have at least one lowercase letter.
Numbers Password must have at least one number.
Special Characters Password must include at least one special character.
Min Length Password is too short.
Max Length Password is too long.
Confirm Password Passwords do not match.

License 📄

This project is licensed under the MIT License. See the LICENSE file for details.

Package Sidebar

Install

npm i @samofprog/nestjs-password-validator

Weekly Downloads

12

Version

1.1.0-beta.1

License

MIT

Unpacked Size

129 kB

Total Files

123

Last publish

Collaborators

  • samofprog