Sunday, October 18, 2020

Password generator JS

 //Dom Elements

let clipboard = document.getElementById('clipboard');
let generatepassword = document.getElementById('generatepassword');
let textarea = document.getElementById('textarea');
let upperCase = document.getElementById('upperCase');
let lowerCase = document.getElementById('lowerCase');
let number = document.getElementById('number');
let symbol = document.getElementById('symbol');
let lengthTaker = document.getElementById('length')


//copy password to clipboard
clipboard.addEventListener('click',()=>{
   const text =  document.createElement('textarea');
   const pass = textarea.value;

   text.value = pass;
   document.body.appendChild(text);
   text.select();
   document.execCommand('copy');
   text.remove();
   alert('password copied!')

})


//function for generating password
generatepassword.addEventListener('click',()=>{
    const length = +lengthTaker.value;
    const hasUpper = upperCase.checked;
    const hasLower = lowerCase.checked;
    const hasNumber = number.checked;
    const hasSymbol = symbol.checked;

    textarea.value = generate(hasUpper,hasLower,hasNumber,hasSymbol,length);
    
});

function generate(upper,lower,number,symbol,length){
    let password = '';
    let typesCount = upper + lower + number + symbol;
    let typesArr = [{upper},{lower},{number},{symbol}].filter(item=>Object.values(item)[0]);
    // console.log('Types arraay',typesArr);
    if(typesCount === 0){
        return '';
    }

    for(i=0;i<length;i+=typesCount){
        typesArr.forEach(type=>{
            const generateFuncName = Object.keys(type)[0];
            // console.log('FuncName',generateFuncName);
            
            password +=generateFunc[generateFuncName]();

        });
    };
    // console.log(password.slice(0, length));
    

    // const finalpassword = password.slice(0,length);
    // console.log('final',final);
    let finalpassword = ''
    for(i=0;i<length;i++){
        let final =  password[Math.floor(Math.random() * password.length)];
         finalpassword += final;

   } 
   return finalpassword;

}



//generator Object
 const generateFunc = {
     upper : generateUpperCase,
     lower :generateLowerCase,
     number:generateNumber,
     symbol:generateSymbol
};


//generator functions

function generateUpperCase(){
    console.log(String.fromCharCode(Math.floor(Math.random()*26)+65));
    return String.fromCharCode(Math.floor(Math.random()*26)+65);
}
function generateLowerCase(){
    console.log(String.fromCharCode(Math.floor(Math.random()*26)+97));
    return String.fromCharCode(Math.floor(Math.random()*26)+97);
}
function generateNumber(){
    console.log(Math.floor(Math.random()*10));
    return (Math.floor(Math.random()*10));
}
function generateSymbol(){
   let symbols = '@#$%&*()!';
   console.log(symbols[Math.floor(Math.random() * symbols.length)]);
   return symbols[Math.floor(Math.random() * symbols.length)];  
}


No comments:

Post a Comment