A customizable password validation library for NestJS with support for custom rules, blacklist, and optional password confirmation.
npm install @samofprog/nestjs-password-validatorA customizable password validation library for NestJS with support for custom rules, blacklist, and optional password confirmation.
---
!CI
!Coverage
!NPM Version
!Install Size
!License
---
| 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. |
---
``bash`
npm install @samofprog/nestjs-password-validatoror
yarn add @samofprog/nestjs-password-validator
---
`typescript
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;
}
`
`typescript
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;
}
`
`typescript
class RegisterDto {
@PasswordMinLength(8)
@ConfirmPassword({ compareToProperty: 'confirmPassword' })
password: string;
confirmPassword: string;
}
`
---
| Option | Type | Description |
|-----------------------------|---------|----------------------------------------------------------|
| PasswordMinLength | objet | Minimum password length. |objet
| PasswordMaxLength | | Maximum password length. |objet
| PasswordHasUpperCase | | Check for at least one uppercase letter. |objet
| PasswordHasLowerCase | | Check for at least one lowercase letter. |objet
| PasswordHasNumbers | | Check for at least one number. |objet
| PasswordHasSpecialChars | | Check for at least one special character. |objet
| PasswordBlacklist | | Disallow specific blacklisted passwords. |objet` | Validate that the password matches a confirmation field. |
| ConfirmPassword |
---
| 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. |
---
This project is licensed under the MIT License. See the LICENSE file for details.