WordPress.org

Make WordPress Core

Ticket #36303: 36303.patch

File 36303.patch, 4.0 KB (added by gitlost, 4 years ago)

Set $user->user_login to blank if adding and no $_POSTuser_login? set.

  • src/wp-admin/includes/user.php

     
    3737                $user->user_login = wp_slash( $userdata->user_login );
    3838        } else {
    3939                $update = false;
     40                $user->user_login = isset( $_POST['user_login'] ) ? sanitize_user( $_POST['user_login'], true ) : '';
    4041        }
    4142
    42         if ( !$update && isset( $_POST['user_login'] ) )
    43                 $user->user_login = sanitize_user($_POST['user_login'], true);
    44 
    4543        $pass1 = $pass2 = '';
    4644        if ( isset( $_POST['pass1'] ) )
    4745                $pass1 = $_POST['pass1'];
  • tests/phpunit/tests/user.php

     
    11991199        function action_check_passwords_blank_pw( $user_login, &$pass1 ) {
    12001200                $pass1 = '';
    12011201        }
     1202
     1203        /**
     1204         * Checks that calling edit_user() with no user_login returns a WP error without PHP Notices.
     1205         *
     1206         * @ticket 36303
     1207         */
     1208        function test_edit_user_blank_user_login() {
     1209                $_POST = $_GET = $_REQUEST = array();
     1210                $_POST['role'] = 'subscriber';
     1211                $_POST['email'] = 'user1@example.com';
     1212                // Leave unset $_POST['user_login']
     1213                $_POST['first_name'] = 'first_name1';
     1214                $_POST['last_name'] = 'last_name1';
     1215                $_POST['nickname'] = 'nickname1';
     1216                $_POST['display_name'] = 'display_name1';
     1217                $_POST['pass1'] = $_POST['pass2'] = 'password';
     1218
     1219                // Check new user with unset user_login.
     1220                $response = edit_user();
     1221
     1222                $this->assertInstanceOf( 'WP_Error', $response );
     1223                $this->assertEquals( array( 'user_login' ), $response->get_error_codes() );
     1224
     1225                // Check new user with blank user_login.
     1226                $_POST['user_login'] = '';
     1227                $response = edit_user();
     1228
     1229                $this->assertInstanceOf( 'WP_Error', $response );
     1230                $this->assertEquals( array( 'user_login' ), $response->get_error_codes() );
     1231
     1232                // Check new user with zero user_login.
     1233                $_POST['user_login'] = '0';
     1234                $response = edit_user();
     1235
     1236                $this->assertInstanceOf( 'WP_Error', $response );
     1237                $this->assertEquals( array( 'user_login' ), $response->get_error_codes() );
     1238
     1239                // Add user.
     1240                $_POST['user_login'] = 'user_login1';
     1241                $user_id = edit_user();
     1242                $user = get_user_by( 'ID', $user_id );
     1243
     1244                $this->assertInternalType( 'int', $user_id );
     1245                $this->assertInstanceOf( 'WP_User', $user );
     1246                $this->assertEquals( 'user_login1', $user->user_login );
     1247                $this->assertEquals( 'nickname1', $user->nickname );
     1248
     1249                // Check can update user with unset user_login (ignored).
     1250                unset( $_POST['user_login'] );
     1251                $_POST['nickname'] = 'nickname_updated';
     1252
     1253                $user_id = edit_user( $user_id );
     1254                $user = get_user_by( 'ID', $user_id );
     1255
     1256                $this->assertInternalType( 'int', $user_id );
     1257                $this->assertInstanceOf( 'WP_User', $user );
     1258                $this->assertEquals( 'user_login1', $user->user_login );
     1259                $this->assertEquals( 'nickname_updated', $user->nickname );
     1260
     1261                // Check can update user with blank user_login (ignored).
     1262                $_POST['user_login'] = '';
     1263                $_POST['nickname'] = 'nickname_updated2';
     1264
     1265                $user_id = edit_user( $user_id );
     1266                $user = get_user_by( 'ID', $user_id );
     1267
     1268                $this->assertInternalType( 'int', $user_id );
     1269                $this->assertInstanceOf( 'WP_User', $user );
     1270                $this->assertEquals( 'user_login1', $user->user_login );
     1271                $this->assertEquals( 'nickname_updated2', $user->nickname );
     1272
     1273                // Check can update user with zero user_login (ignored).
     1274                $_POST['user_login'] = '0';
     1275                $_POST['nickname'] = 'nickname_updated3';
     1276
     1277                $user_id = edit_user( $user_id );
     1278                $user = get_user_by( 'ID', $user_id );
     1279
     1280                $this->assertInternalType( 'int', $user_id );
     1281                $this->assertInstanceOf( 'WP_User', $user );
     1282                $this->assertEquals( 'user_login1', $user->user_login );
     1283                $this->assertEquals( 'nickname_updated3', $user->nickname );
     1284        }
    12021285}