-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
106 lines (87 loc) · 3.49 KB
/
script.js
File metadata and controls
106 lines (87 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Arrays for special characters, numbers, letters
var upperCasedCharacters = ["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",];
var lowerCasedCharacters = ["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"];
var numericCharacters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
var specialCharacters = ['@', '%', '+', '\\', '/', "'", '!', '#', '$', '^', '?', ':', ',', ')', '(', '}', '{', ']', '[', '~', '-', '_', '.'];
var selections = []
// Function to prompt user for password options
function getPasswordOptions() {
var length = parseInt(
prompt("How many characters would you like your password to contain?")
)
if (isNaN(length) === true) {
alert("Password length must be provided as a number");
return;
}
if (length < 8) {
alert("Password length must be at least 8 characters");
return;
}
if (length > 128) {
alert("Password length must be less than 129 characters");
return;
}
var hasSpecialCharacters = confirm("Click OK to confirm including special characters");
var hasNumericCharacters = confirm("Click OK to confirm including numeric characters.");
var hasLowerCasedCharacters = confirm("Click OK to confirm including lowercase characters.");
var hasUpperCasedCharacters = confirm("Click OK to confirm including uppercase characters.");
if (
hasSpecialCharacters === false &&
hasNumericCharacters === false &&
hasLowerCasedCharacters === false &&
hasUpperCasedCharacters === false
) {
alert("Must select at least one character type");
return;
}
var passwordOptions = {
length: length,
hasSpecialCharacters: hasSpecialCharacters,
hasNumericCharacters: hasNumericCharacters,
hasLowerCasedCharacters: hasLowerCasedCharacters,
hasUpperCasedCharacters: hasUpperCasedCharacters
};
return passwordOptions;
}
function getRandom(arr) {
var randIndex = Math.floor(Math.random() * arr.length);
var randElement = arr[randIndex];
return randElement;
}
function generatePassword() {
var options = getPasswordOptions();
var result = [];
var possibleCharacters = [];
var guaranteedCharacters = [];
if (options.hasSpecialCharacters) {
possibleCharacters = possibleCharacters.concat(specialCharacters);
guaranteedCharacters.push(getRandom(specialCharacters));
}
if (options.hasNumericCharacters) {
possibleCharacters = possibleCharacters.concat(numericCharacters);
guaranteedCharacters.push(getRandom(numericCharacters));
}
if (options.hasLowerCasedCharacters) {
possibleCharacters = possibleCharacters.concat(lowerCasedCharacters);
guaranteedCharacters.push(getRandom(lowerCasedCharacters));
}
if (options.hasUpperCasedCharacters) {
possibleCharacters = possibleCharacters.concat(upperCasedCharacters);
guaranteedCharacters.push(getRandom(upperCasedCharacters));
}
for (var i = 0; i < options.length; i++) {
var possibleCharacter = getRandom(possibleCharacters);
result.push(possibleCharacter);
}
for (var i = 0; i < guaranteedCharacters.length;i++) {
result[i] = guaranteedCharacters[i];
}
return result.join('');
}
var generateBtn = document.querySelector('#generate');
function writePassword() {
var password = generatePassword();
var passwordText = document.querySelector('#password');
passwordText.value = password;
}
generateBtn.addEventListener('click', writePassword);