diff --git a/src/wp-admin/js/password-strength-meter.js b/src/wp-admin/js/password-strength-meter.js index a075c26..ea12225 100644 --- a/src/wp-admin/js/password-strength-meter.js +++ b/src/wp-admin/js/password-strength-meter.js @@ -18,6 +18,11 @@ var passwordStrength; if (password1 != password2 && password2 && password2.length > 0) return 5; + if ( 'undefined' === typeof window.zxcvbn ) { + // Password strength unknown + return -1; + } + var result = zxcvbn( password1, blacklist ); return result.score; }, diff --git a/src/wp-admin/js/user-profile.js b/src/wp-admin/js/user-profile.js index 5ec77bc..f2302d3 100644 --- a/src/wp-admin/js/user-profile.js +++ b/src/wp-admin/js/user-profile.js @@ -30,15 +30,25 @@ function generatePassword() { if ( typeof zxcvbn !== 'function' ) { setTimeout( generatePassword, 50 ); - } else { + return; + } else if ( ! $pass1.val() ) { + // zxcvbn loaded before user entered password. $pass1.val( $pass1.data( 'pw' ) ); $pass1.trigger( 'pwupdate' ).trigger( 'wp-check-valid-field' ); - if ( 1 !== parseInt( $toggleButton.data( 'start-masked' ), 10 ) ) { - $pass1Wrap.addClass( 'show-password' ); - } else { - $toggleButton.trigger( 'click' ); - } } + else { + // zxcvbn loaded after the user entered password, check strength. + check_pass_strength(); + } + + if ( 1 !== parseInt( $toggleButton.data( 'start-masked' ), 10 ) ) { + $pass1Wrap.addClass( 'show-password' ); + } else { + $toggleButton.trigger( 'click' ); + } + + // Once zxcvbn loads, passwords strength is known. + $( '#pw-weak-text-label' ).html( userProfileL10n.warnWeak ); } function bindPass1() { @@ -289,6 +299,9 @@ strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass1 ); switch ( strength ) { + case -1: + $('#pass-strength-result').addClass('bad').html( pwsL10n.unknown ); + break; case 2: $('#pass-strength-result').addClass('bad').html( pwsL10n.bad ); break; diff --git a/src/wp-admin/user-edit.php b/src/wp-admin/user-edit.php index 04c19fb..5dc27fd 100644 --- a/src/wp-admin/user-edit.php +++ b/src/wp-admin/user-edit.php @@ -531,7 +531,7 @@ if ( $show_password_fields = apply_filters( 'show_password_fields', true, $profi