1.1.0-beta.1 • Published 1 year ago

@samofprog/nestjs-password-validator v1.1.0-beta.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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 🎯

FeatureDescription
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 CheckEnsure 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 ⚡️

OptionTypeDescription
PasswordMinLengthobjetMinimum password length.
PasswordMaxLengthobjetMaximum password length.
PasswordHasUpperCaseobjetCheck for at least one uppercase letter.
PasswordHasLowerCaseobjetCheck for at least one lowercase letter.
PasswordHasNumbersobjetCheck for at least one number.
PasswordHasSpecialCharsobjetCheck for at least one special character.
PasswordBlacklistobjetDisallow specific blacklisted passwords.
ConfirmPasswordobjetValidate that the password matches a confirmation field.

Example Validation Messages 🔔

RuleDefault Message
BlacklistPassword is blacklisted.
UppercasePassword must have at least one uppercase letter.
LowercasePassword must have at least one lowercase letter.
NumbersPassword must have at least one number.
Special CharactersPassword must include at least one special character.
Min LengthPassword is too short.
Max LengthPassword is too long.
Confirm PasswordPasswords do not match.

License 📄

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