WordPress.org

Make WordPress Core

Changeset 35772


Ignore:
Timestamp:
12/04/2015 11:24:56 PM (5 years ago)
Author:
boonebgorges
Message:

Use 'invalid_username' error code when tripping 'illegal_user_logins'.

This gives us better compatibility with existing errors thrown by
sanitize_user(), especially in Multisite, where user_login has more
restrictions on allowed characters.

Props markjaquith.
Fixes #27317.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/user.php

    r35742 r35772  
    147147
    148148    if ( in_array( strtolower( $user->user_login ), array_map( 'strtolower', $illegal_logins ) ) ) {
    149         $errors->add( 'illegal_user_login', __( '<strong>ERROR</strong>: Sorry, that username is not allowed.' ) );
     149        $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: Sorry, that username is not allowed.' ) );
    150150    }
    151151
  • trunk/src/wp-includes/user.php

    r35764 r35772  
    13321332
    13331333    if ( in_array( strtolower( $user_login ), array_map( 'strtolower', $illegal_logins ) ) ) {
    1334         return new WP_Error( 'illegal_user_login', __( 'Sorry, that username is not allowed.' ) );
     1334        return new WP_Error( 'invalid_username', __( 'Sorry, that username is not allowed.' ) );
    13351335    }
    13361336
     
    21252125    } elseif ( username_exists( $sanitized_user_login ) ) {
    21262126        $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' ) );
     2127
     2128    } else {
     2129        /** This filter is documented in wp-includes/user.php */
     2130        $illegal_user_logins = array_map( 'strtolower', (array) apply_filters( 'illegal_user_logins', array() ) );
     2131        if ( in_array( strtolower( $sanitized_user_login ), $illegal_user_logins ) ) {
     2132            $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: Sorry, that username is not allowed.' ) );
     2133        }
    21272134    }
    21282135
  • trunk/tests/phpunit/tests/user.php

    r35735 r35772  
    623623        $response = wp_insert_user( $user_data );
    624624        $this->assertInstanceOf( 'WP_Error', $response );
    625         $this->assertEquals( 'illegal_user_login', $response->get_error_code() );
     625        $this->assertEquals( 'invalid_username', $response->get_error_code() );
    626626
    627627        remove_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
     
    634634    /**
    635635     * @ticket 27317
     636     * @dataProvider _illegal_user_logins_data
     637     */
     638    function test_illegal_user_logins_single_wp_create_user( $user_login ) {
     639        $user_email = 'testuser-' . $user_login . '@example.com';
     640
     641        add_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
     642
     643        $response = register_new_user( $user_login, $user_email );
     644        $this->assertInstanceOf( 'WP_Error', $response );
     645        $this->assertEquals( 'invalid_username', $response->get_error_code() );
     646
     647        remove_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
     648
     649        $response = register_new_user( $user_login, $user_email );
     650        $user = get_user_by( 'id', $response );
     651        $this->assertInstanceOf( 'WP_User', $user );
     652    }
     653
     654    /**
     655     * @ticket 27317
    636656     */
    637657    function test_illegal_user_logins_multisite() {
     
    659679
    660680    function _illegal_user_logins_data() {
    661         return array(
    662             array( 'testuser' ),
    663             array( 'TestUser' ),
    664         );
     681        $data = array(
     682            array( 'testuser' )
     683        );
     684
     685        // Multisite doesn't allow mixed case logins ever
     686        if ( ! is_multisite() ) {
     687            $data[] = array( 'TestUser' );
     688        }
     689        return $data;
    665690    }
    666691
Note: See TracChangeset for help on using the changeset viewer.