🔒 auth-pass - Secure Password Validator
auth-pass is a lightweight password validation utility that ensures strong security for password updates. It prevents weak passwords, ensures password uniqueness, and enforces strong validation rules.
🚀 Features
- Ensures strong password security (length, complexity, uniqueness)
- Prevents reusing the old password
- Checks for common & weak passwords
- Validates password confirmation
- Levenshtein Distance algorithm to prevent similar passwords
- Simple and lightweight
📦 Installation
npm install auth-pass
🔍 Usage
const validatePasswordUpdate = require("auth-pass");
const testCases = [
{
description: "✅ Valid password update",
oldPassword: "OldPassword@123",
newPassword: "NewPassword@456",
confirmPassword: "NewPassword@456",
},
{
description: "❌ Old password is empty",
oldPassword: "",
newPassword: "NewPassword@456",
confirmPassword: "NewPassword@456",
},
{
description: "❌ New password is empty",
oldPassword: "OldPassword@123",
newPassword: "",
confirmPassword: "NewPassword@456",
},
{
description: "❌ Confirm password is empty",
oldPassword: "OldPassword@123",
newPassword: "NewPassword@456",
confirmPassword: "",
},
{
description: "❌ New password is same as old password",
oldPassword: "SamePassword@123",
newPassword: "SamePassword@123",
confirmPassword: "SamePassword@123",
},
{
description: "❌ Confirm password does not match new password",
oldPassword: "OldPassword@123",
newPassword: "NewPassword@456",
confirmPassword: "WrongPassword@789",
},
{
description: "❌ New password is too short (< 8 chars)",
oldPassword: "OldPassword@123",
newPassword: "Short1!",
confirmPassword: "Short1!",
},
{
description: "❌ New password is too long (> 16 chars)",
oldPassword: "OldPassword@123",
newPassword: "VeryLongPassword@2024",
confirmPassword: "VeryLongPassword@2024",
},
{
description: "❌ New password missing uppercase letter",
oldPassword: "OldPassword@123",
newPassword: "newpassword@123",
confirmPassword: "newpassword@123",
},
{
description: "❌ New password missing lowercase letter",
oldPassword: "OldPassword@123",
newPassword: "NEWPASSWORD@123",
confirmPassword: "NEWPASSWORD@123",
},
{
description: "❌ New password missing number",
oldPassword: "OldPassword@123",
newPassword: "NoNumber@Password",
confirmPassword: "NoNumber@Password",
},
{
description: "❌ New password missing special character",
oldPassword: "OldPassword@123",
newPassword: "NoSpecial123",
confirmPassword: "NoSpecial123",
},
];
testCases.forEach(({ description, oldPassword, newPassword, confirmPassword }) => {
const result = validatePasswordUpdate(oldPassword, newPassword, confirmPassword);
console.log(`${description}:`, result ? result : "✅ Passed!");
});
## 🧪 Validation Rules
- **Old password is required**
- **New password (8-16 chars, A-Z, a-z, 0-9, special char)**
- **New password ≠ Old password**
- **New password should not be too similar to the old password**
- **New password should not be a common or weak password**
- **Confirm password must match**
## 🛠 Testing
```sh
npm test
📜 License
MIT License
📌 GitHub Repo: https://github.com/Twinkle49/auth-pass.git