-
Notifications
You must be signed in to change notification settings - Fork 0
/
password.js
67 lines (56 loc) · 1.65 KB
/
password.js
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
function calculatePasswordStrength(password, config = {}) {
// Define default configuration values
const defaultConfig = {
minLength: 8,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSymbols: true
};
// Merge provided configuration with default configuration
const finalConfig = Object.assign({}, defaultConfig, config);
// Extract values from final configuration
const minLength = finalConfig.minLength;
const requireUppercase = finalConfig.requireUppercase;
const requireLowercase = finalConfig.requireLowercase;
const requireNumbers = finalConfig.requireNumbers;
const requireSymbols = finalConfig.requireSymbols;
let securityPoints = 0;
// Validate password length
if (password.length >= minLength) {
securityPoints++;
}
// Validate if it contains uppercase letters
if (/[A-Z]/.test(password)) {
securityPoints++;
}
// Validate if it contains lowercase letters
if (/[a-z]/.test(password)) {
securityPoints++;
}
// Validate if it contains numbers
if (/[0-9]/.test(password)) {
securityPoints++;
}
// Validate if it contains symbols
if (/[^A-Za-z0-9]/.test(password)) {
securityPoints++;
}
// Calculate security level
let securityLevel;
if (securityPoints <= 2) {
securityLevel = "Very Weak";
} else if (securityPoints === 3) {
securityLevel = "Weak";
} else if (securityPoints === 4) {
securityLevel = "Moderate";
} else {
securityLevel = "Strong";
}
// Return result
return securityLevel;
}
// Example of usage
const password = "password123";
const result = calculatePasswordStrength(password);
console.log(result);