Skip to content

EpleyWebServices/joi-password

Repository files navigation

npm npm npm bundle size

NPM

joi-password

A Joi extension that help to validate a complex password

Requirement

Joi version: 17.x.x

Installation

Npm

npm install joi joi-password

Yarn

yarn add joi joi-password

CDN

<script src="https://unpkg.com/joi@17.4.2/dist/joi-browser.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/heaty566/joi-password@4.1.0/cdn/joi-password.min.js"></script>

Joi extend function

  • minOfUppercase(min: number): Specifies the minimum number of uppercase string characters.
  • minOfLowercase(min: number): Specifies the minimum number of lowercase string characters.
  • minOfSpecialCharacters(min: number): Specifies the minimum number of special string characters.
  • minOfNumeric(min: number): Specifies the minimum number of numeric characters.
  • noWhiteSpaces(): Verifies that a schema has no white spaces, Please do not combine trim() function to make this function works perfectly.
  • onlyLatinCharacters(): Verifies that a schema has only latin characters.

Usage

// example/usage.js

const joi = require('joi');
const { joiPasswordExtendCore } = require('joi-password');
const joiPassword = joi.extend(joiPasswordExtendCore);

const schema = (input) =>
      joi
            .object({
                  username: joi.string().min(5).max(200).required(),
                  password: joiPassword
                        .string()
                        .minOfSpecialCharacters(2)
                        .minOfLowercase(2)
                        .minOfUppercase(2)
                        .minOfNumeric(2)
                        .noWhiteSpaces()
                        .onlyLatinCharacters()
                        .required(),
            })
            .validate(input);

const { error } = schema({ username: 'hello', password: 'AAaa@@00' });
console.log(error); // undefined

Custom error message

// example/custom.js

const joi = require('joi');
const { joiPasswordExtendCore } = require('joi-password');
const joiPassword = joi.extend(joiPasswordExtendCore);

const schema = (input) =>
      joi
            .object({
                  username: joi.string().required(),
                  password: joiPassword
                        .string()
                        .minOfSpecialCharacters(3)
                        .minOfLowercase(4)
                        .minOfUppercase(5)
                        .minOfNumeric(6)
                        .noWhiteSpaces()
                        .onlyLatinCharacters()
                        .messages({
                              'password.minOfUppercase': '{#label} should contain at least {#min} uppercase character',
                              'password.minOfSpecialCharacters':
                                    '{#label} should contain at least {#min} special character',
                              'password.minOfLowercase': '{#label} should contain at least {#min} lowercase character',
                              'password.minOfNumeric': '{#label} should contain at least {#min} numeric character',
                              'password.noWhiteSpaces': '{#label} should not contain white spaces',
                              'password.onlyLatinCharacters': '{#label} should contain only latin characters',
                        }),
            })
            .validate(input, { abortEarly: false });

const { error } = schema({ username: 'aA', password: 'aA@0は ' });

console.log(error);
// 'password' should contain at least 3 special character
// 'password' should contain at least 4 lowercase character
// 'password' should contain at least 5 uppercase character
// 'password'  should contain at least 6 numeric character
// 'password' should not contain white spaces
// 'password' should contain only latin characters

@hapi/joi supports

https://www.npmjs.com/package/hapi-joi-password

hapi-joi-password package is archived and no longer maintained, please use joi and joi-password instead.

Other Password Validator

License

MIT

About

Joi extension to validate complex passwords. (Fork of https://github.com/Heaty566/joi-password.git)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published