Make WordPress Core

Ticket #43265: 43265.2.patch

File 43265.2.patch, 2.1 KB (added by ocean90, 7 years ago)

Replace new nonces

  • src/wp-includes/js/wp-api.js

     
    990990                                var beforeSend, success,
    991991                                        self = this;
    992992
    993                                 options    = options || {};
    994                                 beforeSend = options.beforeSend;
     993                                options = options || {};
    995994
    996                                 // If we have a localized nonce, pass that along with each sync.
    997                                 if ( 'undefined' !== typeof wpApiSettings.nonce ) {
     995                                if ( _.isFunction( model.nonce ) && ! _.isUndefined( model.nonce() ) && ! _.isNull( model.nonce() ) ) {
     996                                        beforeSend = options.beforeSend;
     997
     998                                        // Include the nonce with requests.
    998999                                        options.beforeSend = function( xhr ) {
    999                                                 xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );
     1000                                                xhr.setRequestHeader( 'X-WP-Nonce', model.nonce() );
    10001001
    10011002                                                if ( beforeSend ) {
    10021003                                                        return beforeSend.apply( self, arguments );
    10031004                                                }
    10041005                                        };
     1006
     1007                                        // Update the nonce when a new nonce is returned with the response.
     1008                                        options.complete = function( xhr ) {
     1009                                                var returnedNonce = xhr.getResponseHeader( 'X-WP-Nonce' );
     1010
     1011                                                if ( returnedNonce && _.isFunction( model.nonce ) && model.nonce() !== returnedNonce ) {
     1012                                                        model.endpointModel.set( 'nonce', returnedNonce );
     1013                                                }
     1014                                        };
    10051015                                }
    10061016
    10071017                                // When reading, add pagination data.
     
    14051415                                                        return new loadingObjects.models[ modelClassName ]( attrs, options );
    14061416                                                },
    14071417
     1418                                                // Track nonces at the Endpoint level.
     1419                                                nonce: function() {
     1420                                                        return routeModel.get( 'nonce' );
     1421                                                },
     1422
     1423                                                endpointModel: routeModel,
     1424
    14081425                                                // Include a reference to the original class name.
    14091426                                                name: collectionClassName,
    14101427
     
    14321449                                                        return new loadingObjects.models[ modelClassName ]( attrs, options );
    14331450                                                },
    14341451
     1452                                                // Track nonces at the Endpoint level.
     1453                                                nonce: function() {
     1454                                                        return routeModel.get( 'nonce' );
     1455                                                },
     1456
     1457                                                endpointModel: routeModel,
     1458
    14351459                                                // Include a reference to the original class name.
    14361460                                                name: collectionClassName,
    14371461