Generador de contraseñas en Nodejs

En este código se define una función llamada generarPassword que sirve para generar contraseñas aleatorias. La función acepta tres parámetros: passwordLen que indica la longitud de la contraseña que se quiere generar, hasSpecialChars que indica si la contraseña debe incluir caracteres especiales como "!@#$%", y hasUpperCase que indica si la contraseña debe incluir letras mayúsculas.

La función utiliza un conjunto de caracteres que se pueden incluir en la contraseña y, a partir de ellos, genera una contraseña aleatoria que cumple con los requisitos indicados por los parámetros.

Además, se utiliza la biblioteca yargs para permitir que los parámetros se puedan pasar desde la línea de comandos al momento de ejecutar el script. 

const yargs = require('yargs');

function generarPassword(passwordLen = 12, hasSpecialChars = true, hasUpperCase = true, hasLowerCase = true, hasNumbers = true) {
  const specialChars = '!@#$%^&*()_-+={}[];:"|<>,.?/~`';
  const uppercaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  const lowercaseLetters = 'abcdefghijklmnopqrstuvwxyz';
  const numbers = '0123456789';

  let allowedChars = '';
  let password = '';

  if (hasSpecialChars) {
    allowedChars += specialChars;
    password += randomChar(specialChars);
  }

  if (hasUpperCase) {
    allowedChars += uppercaseLetters;
    password += randomChar(uppercaseLetters);
  }

  if (hasLowerCase) {
    allowedChars += lowercaseLetters;
    password += randomChar(lowercaseLetters);
  }

  if (hasNumbers) {
    allowedChars += numbers;
    password += randomChar(numbers);
  }

  for (let i = password.length; i < passwordLen; i++) {
    password += randomChar(allowedChars);
  }

  return password;
}

function randomChar(characters) {
  const index = Math.floor(Math.random() * characters.length);
  return characters.charAt(index);
}

const argv = yargs
  .option('passwordLen', {
    alias: 'l',
    describe: 'Password length',
    type: 'number',
    default: 12
  })
  .option('hasSpecialChars', {
    alias: 's',
    describe: 'Include special characters',
    type: 'boolean',
    default: true
  })
  .option('hasUpperCase', {
    alias: 'u',
    describe: 'Include uppercase letters',
    type: 'boolean',
    default: true
  })
  .option('hasLowerCase', {
    alias: 'c',
    describe: 'Include lowercase letters',
    type: 'boolean',
    default: true
  })
  .option('hasNumbers', {
    alias: 'n',
    describe: 'Include numbers',
    type: 'boolean',
    default: true
  })
  .help()
  .alias('help', 'h')
  .argv;

const password = generarPassword(
  argv.passwordLen,
  argv.hasSpecialChars,
  argv.hasUpperCase,
  argv.hasLowerCase,
  argv.hasNumbers
);

console.log(password);

Comentarios

Entradas más populares de este blog

Agregar datos a una tabla desde una fuente externa con JQUERY

Recorrer campos de un formulario con JQuery

Encriptar y desencriptar archivos con NodeJs y crypto-js