Make WordPress Core

Ticket #48076: nonce-1.diff

File nonce-1.diff, 2.1 KB (added by iseulde, 6 years ago)
  • src/wp-admin/admin-ajax.php

     
    5353        'autocomplete-user',
    5454        'dashboard-widgets',
    5555        'logged-in',
     56        'rest-nonce',
    5657);
    5758
    5859$core_actions_post = array(
  • src/wp-admin/includes/ajax-actions.php

     
    52685268
    52695269        wp_send_json_success( $all_sizes );
    52705270}
     5271
     5272/**
     5273 * Ajax handler to renew the REST API nonce.
     5274 *
     5275 * @since 5.3.0
     5276 */
     5277function wp_ajax_rest_nonce() {
     5278        exit( wp_create_nonce( 'wp_rest' ) );
     5279}
  • src/wp-includes/script-loader.php

     
    651651        }
    652652        $scripts->add_inline_script(
    653653                'wp-api-fetch',
    654                 sprintf(
    655                         implode(
    656                                 "\n",
    657                                 array(
    658                                         '( function() {',
    659                                         '       var nonceMiddleware = wp.apiFetch.createNonceMiddleware( "%s" );',
    660                                         '       wp.apiFetch.use( nonceMiddleware );',
    661                                         '       wp.hooks.addAction(',
    662                                         '               "heartbeat.tick",',
    663                                         '               "core/api-fetch/create-nonce-middleware",',
    664                                         '               function( response ) {',
    665                                         '                       if ( response[ "rest_nonce" ] ) {',
    666                                         '                               nonceMiddleware.nonce = response[ "rest_nonce" ];',
    667                                         '                       }',
    668                                         '               }',
    669                                         '       );',
    670                                         '} )();',
    671                                 )
     654                join( array(
     655                        sprintf(
     656                                'wp.apiFetch.nonceMiddleware = wp.apiFetch.createNonceMiddleware( "%s" );',
     657                                ( wp_installing() && ! is_multisite() ) ? '' : wp_create_nonce( 'wp_rest' )
    672658                        ),
    673                         ( wp_installing() && ! is_multisite() ) ? '' : wp_create_nonce( 'wp_rest' )
    674                 ),
     659                        'wp.apiFetch.use( wp.apiFetch.nonceMiddleware );',
     660                        sprintf(
     661                                'wp.apiFetch.nonceEndpoint = "%s";',
     662                                admin_url( 'admin-ajax.php?action=rest-nonce' )
     663                        ),
     664                ), "\n" ),
    675665                'after'
    676666        );
    677667        $scripts->add_inline_script(