0.1.0 • Published 8 years ago

password-ruler v0.1.0

Weekly downloads
97
License
MIT
Repository
github
Last release
8 years ago

PasswordRuler Build Status Coverage Status

What does it do?

It helps you easily create a customized password complexity calculator, and furthermore, to build your own strength meter.

Why?

Because -almost- every company you work for has its own requirements & specifications.

Install

npm install --save password-ruler

Usage

Basic scenario

Let's say that you just want to have a basic complexity score:

const PasswordRuler = require('password-ruler');

// Constructor can take an object (one strength level)
// or an array of objects (length of array = number of levels).
// In this scenario, one strength level is fine:
const ruler = new PasswordRuler({
  minLength: { // a validator object has to have 2 props; "weight" & "validate"
    weight: 1, // basically the importance degree of validator
    validate: function(password) { // first argument is always the password
      return password.length > 3;
    }
  },
  containsAnUppercase: {
    weight: 2,
    validate: [Function]
  },
  containsASpecialCharacter: {
    weight: 2,
    validate: [Function]
  }
});

ruler.check('test');
// => {
//   score: 20,
//   strength: 0,
//   levels: [{
//     score: 20,
//     validator: {
//       minLength: true,
//       containsAnUppercase: false,
//       containsASpecialCharacter: false
//     }
//   }]
// }

ruler.check('Test');
// => {
//   score: 60,
//   strength: 0,
//   levels: [{
//     score: 60,
//     validator: {
//       minLength: true,
//       containsAnUppercase: true,
//       containsASpecialCharacter: false
//     }
//   }]
// }

ruler.check('Test*');
// => {
//   score: 100,
//   strength: 1,
//   levels: [{
//     score: 100,
//     validator: {
//       minLength: true,
//       containsAnUppercase: true,
//       containsASpecialCharacter: true
//     }
//   }]
// }

Multiple strength-levels

Let's rapidly create a password strength meter that has 3 levels, using PasswordRuler Add-ons:

const {
  containsUpperCase,
  containsDigit,
  containsSpecialChar,
  excludesSequentialDigits,
  excludesBirthDate
} = require('password-ruler-addons'); // see above link for all available methods

const ruler = new PasswordRuler([
  { // 1st level (Weak):
    uppercase: containsUpperCase(), // Add-ons methods always return a validator
    number: containsDigit()
  },
  { // 2nd level:
    special: containsSpecialChar(2, 3), // => weight: 3 (the value comes after required parameters sets the weight of validator)
    sequential: excludesSequentialDigits(4), // excludes 4 digits, weight is still 1 as default
  },
  { // 3rd level (Strong)
    birthdate: excludesBirthDate()
  }
]);

ruler.check('**Test1234');
// => {
//   score: 71, // overall score that is calculated based on validator weights
//   strength: 1, // makes only the 1st level: weak
//   levels: [
//     {
//       score: 100,
//       validator: {
//         uppercase: true,
//         number: true
//       }
//     },
//     {
//       score: 75, // individual level score
//       validator: {
//         special: true,
//         sequential: false
//       }
//     },
//     {
//       score: 0,
//       validator: {
//         birthdate: undefined
//       }
//     }
//   ]
// }

API

addLevel(level) ⇒ PasswordRuler

Adds a new level on top of existing levels.

Kind: instance method of PasswordRuler Returns: PasswordRuler - PasswordRuler instance's itself

ParamTypeDescription
levelObjectA level object with one or multiple validators

addValidator(name, validate, weight, levelIndex) ⇒ PasswordRuler

Adds a new validator to the given or last level.

Kind: instance method of PasswordRuler Returns: PasswordRuler - PasswordRuler instance's itself

ParamTypeDescription
nameStringValidator name
validatefunctionValidation function
weightIntegerValidator importance rate
levelIndexIntegerIndex of level (If it is not available, validator will be added to the last level)

check(password) ⇒ Object

Checks the given password & provides a result object

Kind: instance method of PasswordRuler Returns: Object - A result object that contains score, strenght & level props

ParamTypeDescription
passwordStringPassword to check

PasswordRuler.init(passwordRuler, levels)

Applies each given levels to the given PasswordRuler instance

Kind: static method of PasswordRuler

ParamTypeDescription
passwordRulerPasswordRulerAn instance of PasswordRuler
levelsArray | ObjectA level list with validators or a single level object

Related

License

MIT http://tameraydin.mit-license.org/