export const generatePassword = (name, email) => { // Combine name and email, and convert to lowercase const combinedStr = (name + email).toLowerCase(); // Define character pools const specialChars = "@#*"; const numbers = "0123456789"; const alphaLower = combinedStr.match(/[a-z]/g) || []; const alphaUpper = combinedStr.match(/[A-Z]/g) || []; // Ensure at least one character from each category const specialChar = specialChars.charAt( Math.floor(Math.random() * specialChars.length) ); const numberChar = numbers.charAt(Math.floor(Math.random() * numbers.length)); const lowerChar = alphaLower.length > 0 ? alphaLower[Math.floor(Math.random() * alphaLower.length)] : String.fromCharCode(Math.floor(Math.random() * 26) + 97); const upperChar = alphaUpper.length > 0 ? alphaUpper[Math.floor(Math.random() * alphaUpper.length)] : String.fromCharCode(Math.floor(Math.random() * 26) + 65); // Combine required characters let passwordChars = [specialChar, numberChar, lowerChar, upperChar]; // Fill remaining positions with random characters from the combined string const allChars = combinedStr + specialChars + numbers; while (passwordChars.length < 8) { passwordChars.push( allChars.charAt(Math.floor(Math.random() * allChars.length)) ); } // Shuffle characters to ensure randomness passwordChars = passwordChars.sort(() => Math.random() - 0.5); // Generate password of length 8 const password = passwordChars.slice(0, 8).join(""); return password; };