WordPress.org

Make WordPress Core

Ticket #24633: 24633.20.patch

File 24633.20.patch, 7.4 KB (added by mordauk, 3 years ago)
  • src/wp-admin/admin-ajax.php

     
    6161        'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor', 
    6262        'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs', 
    6363        'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail', 
    64         'parse-media-shortcode', 'destroy-sessions' 
     64        'parse-media-shortcode', 'destroy-sessions', 'generate_password', 
    6565); 
    6666 
    6767// Register core Ajax calls. 
  • src/wp-admin/css/forms.css

     
    462462        border-color: #8dff1c; 
    463463} 
    464464 
    465 .indicator-hint { 
    466         padding-top: 8px; 
     465#password2 .indicator-hint { 
     466        padding: 4px 0 0 220px; 
    467467} 
    468468 
    469469p.search-box { 
     
    671671        cursor: pointer; 
    672672} 
    673673 
     674.form-table tr#password td, 
     675.form-table tr#password2 td { 
     676        padding: 0 10px; 
     677} 
     678.form-table tr#password2 th, 
     679.form-table tr#password th { 
     680        padding: 0 10px 20px 0px; 
     681} 
     682 
    674683/*------------------------------------------------------------------------------ 
    675684  19.0 - Tools 
    676685------------------------------------------------------------------------------*/ 
     
    976985                padding: 0; 
    977986                line-height: 2; 
    978987        } 
     988 
     989        #password2 .indicator-hint { 
     990                padding-left: 0; 
     991        } 
    979992} 
    980993 
    981994@media only screen and (max-width: 768px) { 
  • src/wp-admin/includes/ajax-actions.php

     
    28142814        ) ); 
    28152815 
    28162816} 
     2817 
     2818/** 
     2819 * Generates a password via ajax 
     2820 * 
     2821 * @since 4.1.0 
     2822 */ 
     2823function wp_ajax_generate_password() { 
     2824        wp_die( wp_generate_password( 30 ) ); 
     2825} 
  • src/wp-admin/includes/user.php

     
    174174 
    175175        if ( $update ) { 
    176176                $user_id = wp_update_user( $user ); 
     177 
     178                // Encourage the user to reset their password 
     179                if( ! empty( $_POST['reset_password'] ) ) { 
     180                        update_user_option( $user_id, 'default_password_nag', true, true ); 
     181                } 
     182 
     183                // Send the new, plaintext password to the user 
     184                if( ! empty( $_POST['send_password'] ) ) { 
     185                        $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); 
     186                        $message  = sprintf( __( 'Username: %s' ), $user->user_login ) . "\r\n"; 
     187                        $message .= sprintf( __( 'Password: %s' ), $pass1 ) . "\r\n"; 
     188                        $message .= wp_login_url() . "\r\n"; 
     189 
     190                        wp_mail( $user->user_email, sprintf( __( '[%s] Your username and password' ), $blogname ), $message ); 
     191                } 
     192 
    177193        } else { 
    178194                $user_id = wp_insert_user( $user ); 
    179195                wp_new_user_notification( $user_id, isset( $_POST['send_password'] ) ? wp_unslash( $pass1 ) : '' ); 
  • src/wp-admin/js/user-profile.js

     
    3232 
    3333        $(document).ready( function() { 
    3434                var $colorpicker, $stylesheet, user_id, current_user_id, 
    35                         select = $( '#display_name' ); 
     35                        select = $( '#display_name' ), 
    3636 
    37                 $('#pass1').val('').keyup( check_pass_strength ); 
    38                 $('#pass2').val('').keyup( check_pass_strength ); 
     37                /* Passwords */ 
     38 
     39                /** 
     40                 * Add a Generate Password button 
     41                 * Add a show password icon to view password when editing own profile 
     42                 * @since 4.1.0 
     43                 */ 
     44                $pass1 = $( '#pass1' ), 
     45                $pass2 = $( '#pass2' ), 
     46                password_repeat = $( '.password-repeat' ); 
     47 
     48                $pass2.val('').keyup( check_pass_strength ); 
     49 
     50                // Handle user entering password 
     51                $pass1.val('').on( 'blur', function() { 
     52                        check_pass_strength(); 
     53                        // Ensure fireld type is password 
     54                        if ( 'text' === $pass1.attr( 'type' ) ) { 
     55                                $pass1.attr( 'type', 'password' ); 
     56                        } 
     57                        if ( 'text' === $pass2.attr( 'type' ) ) { 
     58                                $pass2.attr( 'type', 'password' ); 
     59                        } 
     60                }); 
     61 
     62                // Handle the Generate Password button 
     63                $( '#generate-password' ).on('click', function() { 
     64                        // Send an ajax request to the server to get a new password 
     65                        $.post( ajaxurl, { action: 'generate_password' }, function(response) { 
     66                                $pass1.val( response ).trigger( 'keyup' ); 
     67                                $pass2.val( response ); 
     68                                check_pass_strength(); 
     69                                $pass1.attr( 'type', 'text' ); 
     70                                $pass2.attr( 'type', 'text' ); 
     71                                $pass1.focus().select(); 
     72                        }); 
     73                }); 
     74 
    3975                $('#pass-strength-result').show(); 
     76 
     77                /* End Passwords */ 
     78 
    4079                $('.color-palette').click( function() { 
    4180                        $(this).siblings('input[name="admin_color"]').prop('checked', true); 
    4281                }); 
  • src/wp-admin/user-edit.php

     
    470470<tr id="password" class="user-pass1-wrap"> 
    471471        <th><label for="pass1"><?php _e( 'New Password' ); ?></label></th> 
    472472        <td> 
    473                 <input class="hidden" value=" " /><!-- #24364 workaround --> 
    474                 <input type="password" name="pass1" id="pass1" class="regular-text" size="16" value="" autocomplete="off" /> 
    475                 <p class="description"><?php _e( 'If you would like to change the password type a new one. Otherwise leave this blank.' ); ?></p> 
     473                <input type="password" name="pass1" id="pass1" class="regular-text" value="" autocomplete="off" /> 
     474                <input type="button" name="generate-password" id="generate-password" value="<?php _e( 'Generate Password' ); ?>" class="button hide-if-no-js" /> 
    476475        </td> 
    477476</tr> 
    478 <tr class="user-pass2-wrap"> 
    479         <th scope="row"><label for="pass2"><?php _e( 'Repeat New Password' ); ?></label></th> 
     477<tr id="password2" class="user-pass2-wrap"> 
     478        <th><label class="password-repeat" for="pass2"><?php _e( 'Repeat New Password' ); ?></label></th> 
    480479        <td> 
    481         <input name="pass2" type="password" id="pass2" class="regular-text" size="16" value="" autocomplete="off" /> 
    482         <p class="description"><?php _e( 'Type your new password again.' ); ?></p> 
    483         <br /> 
    484         <div id="pass-strength-result"><?php _e( 'Strength indicator' ); ?></div> 
    485         <p class="description indicator-hint"><?php echo _wp_get_password_hint(); ?></p> 
     480                <div class="password-repeat"> 
     481                        <input name="pass2" type="password" id="pass2" class="regular-text" value="" autocomplete="off" /> 
     482                        <br /> 
     483                        <div id="pass-strength-result"><?php _e( 'Strength indicator' ); ?></div> 
     484                        <p class="description indicator-hint"><?php _e( 'Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ &amp; ).' ); ?></p> 
     485                </div> 
     486                <p class="description"><?php _e( 'If you would like to change the password type or generate a new one. Otherwise leave this blank.' ); ?></p> 
     487                <?php if( ! IS_PROFILE_PAGE ) { ?> 
     488                <p class="hide-if-no-js"> 
     489                        <label for="send_password"> 
     490                                <input type="checkbox" name="send_password" id="send_password" value="1" /> <?php _e( 'Send this password to the user by email.' ); ?> 
     491                        </label> 
     492                        <br /> 
     493                        <label for="reset_password"> 
     494                                <input type="checkbox" name="reset_password" id="reset_password" value="1" /> <?php _e( 'Encourage the user to change their password, once logged in.' ); ?> 
     495                        </label> 
     496                </p> 
     497                <?php } ?> 
    486498        </td> 
    487499</tr> 
    488500<?php endif; ?>