WordPress.org

Make WordPress Core

Ticket #4470: password-strength-meter2.diff

File password-strength-meter2.diff, 7.3 KB (added by JDTrower, 8 years ago)
  • wp-admin/js/passwordStrengthMeter.js

     
     1// Password strength meter 
     2// This jQuery plugin is written by firas kassem [2007.04.05] 
     3// Firas Kassem  phiras.wordpress.com || phiras at gmail {dot} com 
     4// for more information : http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/ 
     5 
     6var shortPass = 'Too short' 
     7var badPass = 'Bad' 
     8var goodPass = 'Good' 
     9var strongPass = 'Strong' 
     10 
     11 
     12 
     13function passwordStrength(password,username) 
     14{ 
     15    score = 0  
     16     
     17    //password < 4 
     18    if (password.length < 4 ) { return shortPass } 
     19     
     20    //password == username 
     21    if (password.toLowerCase()==username.toLowerCase()) return badPass 
     22     
     23    //password length 
     24    score += password.length * 4 
     25    score += ( checkRepetition(1,password).length - password.length ) * 1 
     26    score += ( checkRepetition(2,password).length - password.length ) * 1 
     27    score += ( checkRepetition(3,password).length - password.length ) * 1 
     28    score += ( checkRepetition(4,password).length - password.length ) * 1 
     29 
     30    //password has 3 numbers 
     31    if (password.match(/(.*[0-9].*[0-9].*[0-9])/))  score += 5  
     32     
     33    //password has 2 sybols 
     34    if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) score += 5  
     35     
     36    //password has Upper and Lower chars 
     37    if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  score += 10  
     38     
     39    //password has number and chars 
     40    if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  score += 15  
     41    // 
     42    //password has number and symbol 
     43    if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/))  score += 15  
     44     
     45    //password has char and symbol 
     46    if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/))  score += 15  
     47     
     48    //password is just a nubers or chars 
     49    if (password.match(/^\w+$/) || password.match(/^\d+$/) )  score -= 10  
     50     
     51    //verifing 0 < score < 100 
     52    if ( score < 0 )  score = 0  
     53    if ( score > 100 )  score = 100  
     54     
     55    if (score < 34 )  return badPass  
     56    if (score < 68 )  return goodPass 
     57    return strongPass 
     58} 
     59 
     60 
     61// checkRepetition(1,'aaaaaaabcbc')   = 'abcbc' 
     62// checkRepetition(2,'aaaaaaabcbc')   = 'aabc' 
     63// checkRepetition(2,'aaaaaaabcdbcd') = 'aabcd' 
     64 
     65function checkRepetition(pLen,str) { 
     66    res = "" 
     67    for ( i=0; i<str.length ; i++ ) { 
     68        repeated=true 
     69        for (j=0;j < pLen && (j+i+pLen) < str.length;j++) 
     70            repeated=repeated && (str.charAt(j+i)==str.charAt(j+i+pLen)) 
     71        if (j<pLen) repeated=false 
     72        if (repeated) { 
     73            i+=pLen-1 
     74            repeated=false 
     75        } 
     76        else { 
     77            res+=str.charAt(i) 
     78        } 
     79    } 
     80    return res 
     81} 
  • wp-admin/profile.php

     
    11<?php 
    22require_once('admin.php'); 
    33 
     4function profile_js ( ) { 
     5?> 
     6<script type="text/javascript"> 
     7        function check_pass_strength ( ) { 
     8 
     9                var pass = jQuery('#pass1').val(); 
     10                var user = jQuery('#user_login').val(); 
     11 
     12                // get the result as an object, i'm tired of typing it 
     13                var res = jQuery('#pass-strength-result'); 
     14 
     15                var strength = passwordStrength(pass, user); 
     16 
     17                jQuery(res).removeClass('short bad good strong'); 
     18 
     19                if ( strength == 'Bad' ) { 
     20                        jQuery(res).addClass('bad'); 
     21                        jQuery(res).html( pwsL10n.bad ); 
     22                } 
     23                else if ( strength == 'Good' ) { 
     24                        jQuery(res).addClass('good'); 
     25                        jQuery(res).html( pwsL10n.good ); 
     26                } 
     27                else if ( strength == 'Strong' ) { 
     28                        jQuery(res).addClass('strong'); 
     29                        jQuery(res).html( pwsL10n.strong ); 
     30                } 
     31                else { 
     32                        // this catches 'Too short' and the off chance anything else comes along 
     33                        jQuery(res).addClass('short'); 
     34                        jQuery(res).html( pwsL10n.short ); 
     35                } 
     36 
     37        } 
     38 
     39        jQuery(document).ready( function() { jQuery('#pass1').keyup( check_pass_strength ) } ); 
     40</script> 
     41<?php 
     42} 
     43 
     44add_action('admin_head', 'profile_js'); 
     45 
     46wp_enqueue_script('jquery'); 
     47wp_enqueue_script('password-strength-meter'); 
     48 
    449$title = __('Profile'); 
    550 
    651if ( current_user_can('edit_users') ) 
     
    4287<fieldset id="information"> 
    4388<legend><?php _e('Name'); ?></legend> 
    4489<p><label><?php _e('Username: (no editing)'); ?><br /> 
    45 <input type="text" name="user_login" value="<?php echo $profileuser->user_login; ?>" disabled="disabled" /> 
     90<input type="text" name="user_login" id="user_login" value="<?php echo $profileuser->user_login; ?>" disabled="disabled" /> 
    4691</label></p> 
    4792 
    4893<p><label><?php _e('First name:') ?><br /> 
     
    114159<p><label><?php _e('Type it one more time:'); ?><br /> 
    115160<input type="password" name="pass2" id="pass2" size="16" value="" /> 
    116161</label></p> 
     162<p><strong><?php _e('Password Strength:'); ?></strong></p> 
     163<div id="pass-strength-result"><?php _e('Too short'); ?></div> 
     164<!--[if IE 6]><div id="pass-strength-iesucks"><?php _e("If you weren&#8217;t using this sucky IE6, there would be pretty colors... and cookies!"); ?></div><![endif]--> 
     165<p><?php _e('Hint: Use upper and lower case characters, numbers and symbols like !"£$%^&( in your password.'); ?></p> 
    117166</fieldset> 
    118167<?php endif; ?> 
    119168 
  • wp-admin/wp-admin.css

     
    13551355} 
    13561356#update-nag a:link, .plugin-update a:link { 
    13571357        color: #036; 
    1358 } 
    1359  No newline at end of file 
     1358} 
     1359 
     1360#pass-strength-result {  
     1361        padding: 3px 5px 3px 5px; 
     1362        margin-top: 3px; 
     1363        text-align: center;  
     1364        background-color: #e3e3e3; 
     1365        border: 1px solid #000000; 
     1366} 
     1367 
     1368#pass-strength-result.short {  
     1369        background-color: #e3e3e3; 
     1370        border: 1px solid #000000;  
     1371}  
     1372 
     1373#pass-strength-result.bad {  
     1374        background-color: #ffeff7; 
     1375        border: 1px solid #cc6699;  
     1376}  
     1377 
     1378#pass-strength-result.good {  
     1379        background-color: #effff4; 
     1380        border: 1px solid #66cc87;  
     1381}  
     1382 
     1383#pass-strength-result.strong {  
     1384        background-color: #59ef86; 
     1385        border: 1px solid #319f52; 
     1386}  
     1387 
     1388#pass-strength-iesucks {  
     1389        font-size: 8pt;  
     1390        text-align: center;  
     1391}  
     1392 No newline at end of file 
  • wp-includes/script-loader.php

     
    117117                        ) ); 
    118118                        $this->add( 'admin-categories', '/wp-admin/js/categories.js', array('wp-lists'), '20071031' ); 
    119119                        $this->add( 'admin-custom-fields', '/wp-admin/js/custom-fields.js', array('wp-lists'), '20070823' ); 
     120                        $this->add( 'password-strength-meter', '/wp-admin/js/passwordStrengthMeter.js', array('jquery'), '20070405' );  
     121                        $this->localize( 'password-strength-meter', 'pwsL10n', array(  
     122                                'short' => __('Too short'),  
     123                                'bad' => __('Bad'),  
     124                                'good' => __('Good'),  
     125                                'strong' => __('Strong')  
     126                        ) ); 
    120127                        $this->add( 'admin-comments', '/wp-admin/js/edit-comments.js', array('wp-lists'), '20071104' ); 
    121128                        $this->add( 'admin-posts', '/wp-admin/js/edit-posts.js', array('wp-lists'), '20071023' ); 
    122129                        $this->add( 'admin-users', '/wp-admin/js/users.js', array('wp-lists'), '20070823' );