28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
export const generatePassword = (length: number) => {
|
|
const uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
const lowercase = "abcdefghijklmnopqrstuvwxyz";
|
|
const numbers = "0123456789";
|
|
const symbols = "!@#$%&()_+-={}:,.<>?/"; // Safe symbol list
|
|
|
|
// Ensure the password contains at least one of each required type
|
|
let password: any = [
|
|
uppercase[Math.floor(Math.random() * uppercase.length)],
|
|
lowercase[Math.floor(Math.random() * lowercase.length)],
|
|
numbers[Math.floor(Math.random() * numbers.length)],
|
|
symbols[Math.floor(Math.random() * symbols.length)],
|
|
];
|
|
|
|
// Fill the rest of the password with random characters from all sets
|
|
const allCharacters = uppercase + lowercase;
|
|
for (let i = password.length; i < length; i++) {
|
|
password.push(
|
|
allCharacters[Math.floor(Math.random() * allCharacters.length)]
|
|
);
|
|
}
|
|
|
|
// Shuffle the password to avoid predictable patterns
|
|
password = password.sort(() => Math.random() - 0.5).join("");
|
|
|
|
return password;
|
|
};
|