hs-password-validator
Version:
> A complete and comprehensive password validator
206 lines (171 loc) • 4.31 kB
Markdown
# Password Validator
> A complete and comprehensive password validator
## Prerequisites
This project requires NodeJS (version 12 or later)
## Install
```sh
npm i hs-password-validator
```
Or if you prefer using Yarn:
```sh
yarn add hs-password-validator
```
## Usage
```ts
import PasswordValidator from 'hs-password-validator'
// Using only options
// Validate if a password has min length of characters
const validate = PasswordValidator({
password: 'myTestingPassword',
options: ['min']
})
console.log(validate)
/*
{
"hasInvalidFields": false,
"data": [
{
"validation": "min",
"arguments": 10,
"message": "Must contain at least 10 characters",
"satisfied": true
}
]
}
*/
// Validate if a password has at least one upper case character
const validateUppercase = PasswordValidator({
password: 'mypasswordhasnouppercase',
options: ['uppercase']
})
console.log(validateUppercase)
/*
{
"hasInvalidFields": true,
"data": [
{
"validation": "uppercase",
"message": "At least one uppercase letter",
"satisfied": false
}
]
}
*/
```
### Configuration
By default all options works without any extra configuration but you may want change some of them.
```ts
const validate = PasswordValidator({
password: 'ShortPassword',
options: ['min'],
config: { length: { minLength: 16 } }
})
console.log(validate)
/*
{
"hasInvalidFields": true,
"data": [
{
"validation": "min",
"arguments": 16,
"message": "Must contain at least 16 characters",
"satisfied": false
}
]
}
*/
```
### Language
This package supports multiple languages. You can change the language by setting the `lang` config.
_By default this package use en-US, for now only english and pourtuguese br were supported, more in the future_
```ts
const validate = PasswordValidator({
password: 'ShortPassword',
options: ['min'],
config: { length: { minLength: 16 }, lang: 'pt-BR' }
})
console.log(validate)
/*
{
"hasInvalidFields": true,
"data": [
{
"validation": "min",
"arguments": 16,
"message": "Deve conter no mínimo 16 caracteres",
"satisfied": false
}
]
}
*/
```
## Multiples options
You can combine multiple options to validate a password.
```ts
const validate = PasswordValidator({
password: 'MyPassword',
options: ['min', 'uppercase', 'lowercase', 'number', 'symbol'],
config: { length: { minLength: 8 } }
})
console.log(validate)
/*
{
"hasInvalidFields": true,
"data": [
{
"validation": "min",
"arguments": 8,
"message": "Must contain at least 8 characters",
"satisfied": true
},
{
"validation": "uppercase",
"message": "At least one uppercase letter",
"satisfied": true
},
{
"validation": "lowercase",
"message": "At least one lowercase letter",
"satisfied": true
},
{
"validation": "number",
"message": "Must contain numbers",
"satisfied": false
},
{
"validation": "symbol",
"message": "At least one special character",
"satisfied": false
}
]
}
*/
```
## Available options
| Option | Description |
| ------ | :---: |
| min | Minimun password length |
| max | Maximun password length |
| uppercase | At least one uppercase |
| lowercase | At least one lowercase |
| symbol | At least one symbol |
| number | At least one number |
| space | Does not allow spaces |
| sequential | Does not allow sequential letters |
| strength | Password strength |
## Available configs
### Length
| Option | Description | Default |
| ------ | :---: | :---: |
| minLength | Minimun password length | 10 |
| maxLength | Maximun password length | 128 |
### Score Config
| Option | Description | Default |
| ------ | :---: | :---: |
| minAcceptable | Minimun strength allowed | strong |
### Language Config
| Option | Description | Default |
| ------ | :---: | :---: |
| lang | Set the messages language | en-US |
_Available: en-US, pt-BR_