Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Generate a password.
- Password should have:
- 1. At least one lowercase letter. That’s any letter from a to z.
- 2. At least one uppercase letter. That any from A to Z.
- 3. At least one number. Any number from 0 to 9 will do
- 4. And at least one special character. This can be: !, @, # , * , (, ) , % or any other.
- 5. And length should be random and between 8-20 characters.
- Each new password must be unique.
- Test@129 - valid
- TestAbc - invalid
- */
- // Plan (MVP):
- // /x/ no input
- // /x/ initialize arrays with chars
- // /x/ use Math.random(range) for:
- // // /x/ password length
- // // /x/ curr char
- // /x/ flags for missing char type
- // /x/ while missing char type, keep generating random char on random index, override flags
- // /x/ while list of unique passwords inlucludes generated password, keep generating new passwords
- const generatePassword = () => {
- const result = [];
- const lowercaseLetters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
- const uppercaseLetters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
- const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
- const specialChars = ['!', '@', '#', '*', '(', ')', '%'];
- const allChars = [...lowercaseLetters, ...uppercaseLetters, ...numbers, ...specialChars];
- const randomLength = Math.trunc(Math.random() * 13) + 8;
- for (let i = 0; i < randomLength; i++) {
- const randomChar = allChars[Math.trunc(Math.random() * 69)];
- result.push(randomChar);
- }
- let hasNoLowercaseLetters = lowercaseLetters.some(char => result.includes(char)) === false;
- let hasNoUppercaseLetters = uppercaseLetters.some(char => result.includes(char)) === false;
- let hasNoNumbers = numbers.some(char => result.includes(char)) === false;
- let hasNoSpecialChars = specialChars.some(char => result.includes(char)) === false;
- while (hasNoLowercaseLetters || hasNoUppercaseLetters || hasNoNumbers || hasNoSpecialChars) {
- const randomChar = allChars[Math.trunc(Math.random() * 69)];
- const randomIndex = Math.trunc(Math.random() * randomLength);
- result[randomIndex] = randomChar;
- hasNoLowercaseLetters = lowercaseLetters.some(char => result.includes(char)) === false;
- hasNoUppercaseLetters = uppercaseLetters.some(char => result.includes(char)) === false;
- hasNoNumbers = numbers.some(char => result.includes(char)) === false;
- hasNoSpecialChars = specialChars.some(char => result.includes(char)) === false;
- }
- return result.join('');
- };
- const uniquePasswords = [];
- const generateUniquePassword = () => {
- let result = generatePassword();
- while (uniquePasswords.includes(result)) {
- result = generatePassword();
- }
- uniquePasswords.push(result);
- return result;
- };
- console.log(generateUniquePassword());
- console.log(generateUniquePassword());
- console.log(generateUniquePassword());
- console.log(generateUniquePassword());
Advertisement
Add Comment
Please, Sign In to add comment