Diff: STRATO-apps/wordpress_03/app/wp-admin/js/password-strength-meter.js
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
/**
2
+
* @output wp-admin/js/password-strength-meter.js
3
+
*/
4
+
5
+
/* global zxcvbn */
6
+
window.wp = window.wp || {};
7
+
8
+
(function($){
9
+
var __ = wp.i18n.__,
10
+
sprintf = wp.i18n.sprintf;
11
+
12
+
/**
13
+
* Contains functions to determine the password strength.
14
+
*
15
+
* @since 3.7.0
16
+
*
17
+
* @namespace
18
+
*/
19
+
wp.passwordStrength = {
20
+
/**
21
+
* Determines the strength of a given password.
22
+
*
23
+
* Compares first password to the password confirmation.
24
+
*
25
+
* @since 3.7.0
26
+
*
27
+
* @param {string} password1 The subject password.
28
+
* @param {Array} disallowedList An array of words that will lower the entropy of
29
+
* the password.
30
+
* @param {string} password2 The password confirmation.
31
+
*
32
+
* @return {number} The password strength score.
33
+
*/
34
+
meter : function( password1, disallowedList, password2 ) {
35
+
if ( ! Array.isArray( disallowedList ) )
36
+
disallowedList = [ disallowedList.toString() ];
37
+
38
+
if (password1 != password2 && password2 && password2.length > 0)
39
+
return 5;
40
+
41
+
if ( 'undefined' === typeof window.zxcvbn ) {
42
+
// Password strength unknown.
43
+
return -1;
44
+
}
45
+
46
+
var result = zxcvbn( password1, disallowedList );
47
+
return result.score;
48
+
},
49
+
50
+
/**
51
+
* Builds an array of words that should be penalized.
52
+
*
53
+
* Certain words need to be penalized because it would lower the entropy of a
54
+
* password if they were used. The disallowedList is based on user input fields such
55
+
* as username, first name, email etc.
56
+
*
57
+
* @since 3.7.0
58
+
* @deprecated 5.5.0 Use {@see 'userInputDisallowedList()'} instead.
59
+
*
60
+
* @return {string[]} The array of words to be disallowed.
61
+
*/
62
+
userInputBlacklist : function() {
63
+
window.console.log(
64
+
sprintf(
65
+
/* translators: 1: Deprecated function name, 2: Version number, 3: Alternative function name. */
66
+
__( '%1$s is deprecated since version %2$s! Use %3$s instead. Please consider writing more inclusive code.' ),
67
+
'wp.passwordStrength.userInputBlacklist()',
68
+
'5.5.0',
69
+
'wp.passwordStrength.userInputDisallowedList()'
70
+
)
71
+
);
72
+
73
+
return wp.passwordStrength.userInputDisallowedList();
74
+
},
75
+
76
+
/**
77
+
* Builds an array of words that should be penalized.
78
+
*
79
+
* Certain words need to be penalized because it would lower the entropy of a
80
+
* password if they were used. The disallowed list is based on user input fields such
81
+
* as username, first name, email etc.
82
+
*
83
+
* @since 5.5.0
84
+
*
85
+
* @return {string[]} The array of words to be disallowed.
86
+
*/
87
+
userInputDisallowedList : function() {
88
+
var i, userInputFieldsLength, rawValuesLength, currentField,
89
+
rawValues = [],
90
+
disallowedList = [],
91
+
userInputFields = [ 'user_login', 'first_name', 'last_name', 'nickname', 'display_name', 'email', 'url', 'description', 'weblog_title', 'admin_email' ];
92
+
93
+
// Collect all the strings we want to disallow.
94
+
rawValues.push( document.title );
95
+
rawValues.push( document.URL );
96
+
97
+
userInputFieldsLength = userInputFields.length;
98
+
for ( i = 0; i < userInputFieldsLength; i++ ) {
99
+
currentField = $( '#' + userInputFields[ i ] );
100
+
101
+
if ( 0 === currentField.length ) {
102
+
continue;
103
+
}
104
+
105
+
rawValues.push( currentField[0].defaultValue );
106
+
rawValues.push( currentField.val() );
107
+
}
108
+
109
+
/*
110
+
* Strip out non-alphanumeric characters and convert each word to an
111
+
* individual entry.
112
+
*/
113
+
rawValuesLength = rawValues.length;
114
+
for ( i = 0; i < rawValuesLength; i++ ) {
115
+
if ( rawValues[ i ] ) {
116
+
disallowedList = disallowedList.concat( rawValues[ i ].replace( /\W/g, ' ' ).split( ' ' ) );
117
+
}
118
+
}
119
+
120
+
/*
121
+
* Remove empty values, short words and duplicates. Short words are likely to
122
+
* cause many false positives.
123
+
*/
124
+
disallowedList = $.grep( disallowedList, function( value, key ) {
125
+
if ( '' === value || 4 > value.length ) {
126
+
return false;
127
+
}
128
+
129
+
return $.inArray( value, disallowedList ) === key;
130
+
});
131
+
132
+
return disallowedList;
133
+
}
134
+
};
135
+
136
+
// Backward compatibility.
137
+
138
+
/**
139
+
* Password strength meter function.
140
+
*
141
+
* @since 2.5.0
142
+
* @deprecated 3.7.0 Use wp.passwordStrength.meter instead.
143
+
*
144
+
* @global
145
+
*
146
+
* @type {wp.passwordStrength.meter}
147
+
*/
148
+
window.passwordStrength = wp.passwordStrength.meter;
149
+
})(jQuery);
150
+