WordPress.org

Make WordPress Core

Changeset 21135


Ignore:
Timestamp:
06/26/12 18:48:18 (22 months ago)
Author:
nacin
Message:

Refresh nonces in the customizer. props koopersmith. see #20876.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/customize.php

    r21069 r21135  
    88 */ 
    99 
     10define( 'IFRAME_REQUEST', true ); 
     11 
    1012require_once( './admin.php' ); 
    1113if ( ! current_user_can( 'edit_theme_options' ) ) 
     
    6668<div class="wp-full-overlay expanded"> 
    6769    <form id="customize-controls" class="wrap wp-full-overlay-sidebar"> 
    68         <?php wp_nonce_field( 'customize_controls-' . $wp_customize->get_stylesheet() ); ?> 
    6970        <div id="customize-header-actions" class="wp-full-overlay-header"> 
    7071            <?php 
     
    176177        'settings' => array(), 
    177178        'controls' => array(), 
     179        'nonce'    => array( 
     180            'save'    => wp_create_nonce( 'save-customize_' . $wp_customize->get_stylesheet() ), 
     181            'preview' => wp_create_nonce( 'preview-customize_' . $wp_customize->get_stylesheet() ) 
     182        ), 
    178183    ); 
    179184 
  • trunk/wp-admin/js/customize-controls.dev.js

    r21071 r21135  
    295295            deferred.promise( this ); 
    296296 
    297             this.previewer = params.previewer; 
     297            this.container = params.container; 
     298            this.signature = params.signature; 
    298299 
    299300            $.extend( params, { channel: api.PreviewFrame.uuid() }); 
     
    339340            this.request.done( function( response ) { 
    340341                var location = self.request.getResponseHeader('Location'), 
    341                     signature = 'WP_CUSTOMIZER_SIGNATURE', 
     342                    signature = self.signature, 
    342343                    index; 
    343344 
     
    372373 
    373374                // Create the iframe and inject the html content. 
    374                 self.iframe = $('<iframe />').appendTo( self.previewer.container ); 
     375                self.iframe = $('<iframe />').appendTo( self.container ); 
    375376 
    376377                // Bind load event after the iframe has been added to the page; 
     
    417418 
    418419                iframe = $('<iframe src="' + self.previewUrl() + '" />').hide(); 
    419                 iframe.appendTo( self.previewer.container ); 
     420                iframe.appendTo( self.container ); 
    420421                iframe.load( function() { 
    421422                    self.triedLogin = true; 
     
    498499            this.container   = api.ensure( params.container ); 
    499500            this.allowedUrls = params.allowedUrls; 
     501            this.signature   = params.signature; 
    500502 
    501503            params.url = window.location.href; 
     
    571573                previewUrl: this.previewUrl(), 
    572574                query:      this.query() || {}, 
    573                 previewer:  this 
     575                container:  this.container, 
     576                signature:  this.signature 
    574577            }); 
    575578 
     
    584587                    self.targetWindow( this.targetWindow() ); 
    585588                    self.channel( this.channel() ); 
     589 
     590                    self.send( 'active' ); 
    586591                }); 
    587592 
     
    684689            form:        '#customize-controls', 
    685690            previewUrl:  api.settings.url.preview, 
    686             allowedUrls: api.settings.url.allowed 
     691            allowedUrls: api.settings.url.allowed, 
     692            signature:   'WP_CUSTOMIZER_SIGNATURE' 
    687693        }, { 
     694 
     695            nonce: api.settings.nonce, 
     696 
    688697            query: function() { 
    689698                return { 
    690699                    wp_customize: 'on', 
    691700                    theme:        api.settings.theme.stylesheet, 
    692                     customized:   JSON.stringify( api.get() ) 
     701                    customized:   JSON.stringify( api.get() ), 
     702                    nonce:        this.nonce.preview 
    693703                }; 
    694704            }, 
    695  
    696             nonce: $('#_wpnonce').val(), 
    697705 
    698706            save: function() { 
     
    700708                    query = $.extend( this.query(), { 
    701709                        action: 'customize_save', 
    702                         nonce:  this.nonce 
     710                        nonce:  this.nonce.save 
    703711                    }), 
    704712                    request = $.post( api.settings.url.ajax, query ); 
     
    733741            } 
    734742        }); 
     743 
     744        // Refresh the nonces if the preview sends updated nonces over. 
     745        previewer.bind( 'nonce', function( nonce ) { 
     746            $.extend( this.nonce, nonce ); 
     747        }); 
    735748 
    736749        $.each( api.settings.settings, function( id, data ) { 
  • trunk/wp-includes/class-wp-customize-manager.php

    r21131 r21135  
    1818    protected $controls = array(); 
    1919 
     20    protected $nonce_tick; 
     21 
    2022    protected $customized; 
    2123 
     
    309311     */ 
    310312    public function customize_preview_init() { 
     313        $this->nonce_tick = check_ajax_referer( 'preview-customize_' . $this->get_stylesheet(), 'nonce' ); 
     314 
    311315        $this->prepare_controls(); 
    312316 
     
    363367        ); 
    364368 
     369        if ( 2 == $this->nonce_tick ) { 
     370            $settings['nonce'] = array( 
     371                'save' => wp_create_nonce( 'save-customize_' . $this->get_stylesheet() ), 
     372                'preview' => wp_create_nonce( 'preview-customize_' . $this->get_stylesheet() ) 
     373            ); 
     374        } 
     375 
    365376        foreach ( $this->settings as $id => $setting ) { 
    366377            $settings['values'][ $id ] = $setting->js_value(); 
     
    469480            die; 
    470481 
    471         check_ajax_referer( 'customize_controls-' . $this->get_stylesheet(), 'nonce' ); 
     482        check_ajax_referer( 'save-customize_' . $this->get_stylesheet(), 'nonce' ); 
    472483 
    473484        // Do we have to switch themes? 
  • trunk/wp-includes/js/customize-preview.dev.js

    r21054 r21135  
    8989            }); 
    9090            preview.send( 'synced' ); 
    91         }) 
     91        }); 
     92 
     93        preview.bind( 'active', function() { 
     94            if ( api.settings.nonce ) 
     95                preview.send( 'nonce', api.settings.nonce ); 
     96        }); 
    9297 
    9398        preview.send( 'ready' ); 
  • trunk/wp-login.php

    r21031 r21135  
    4040 */ 
    4141function login_header($title = 'Log In', $message = '', $wp_error = '') { 
    42     global $error, $interim_login, $current_site, $customize_login; 
     42    global $error, $interim_login, $current_site; 
    4343 
    4444    // Don't index any of these forms 
     
    6868        <meta name="viewport" content="width=320; initial-scale=0.9; maximum-scale=1.0; user-scalable=0;" /><?php 
    6969    } 
    70  
    71     if ( $customize_login ) 
    72         wp_enqueue_script( 'customize-base' ); 
    7370 
    7471    do_action( 'login_enqueue_scripts' ); 
     
    569566    $interim_login = isset($_REQUEST['interim-login']); 
    570567    $customize_login = isset( $_REQUEST['customize-login'] ); 
     568    if ( $customize_login ) 
     569        wp_enqueue_script( 'customize-base' ); 
    571570 
    572571    // If the user wants ssl but the session is not ssl, force a secure cookie. 
     
    605604        if ( $interim_login ) { 
    606605            $message = '<p class="message">' . __('You have logged in successfully.') . '</p>'; 
    607             login_header( '', $message ); 
    608  
    609             if ( ! $customize_login ) : ?> 
    610                 <script type="text/javascript">setTimeout( function(){window.close()}, 8000);</script> 
    611                 <p class="alignright"> 
    612                 <input type="button" class="button-primary" value="<?php esc_attr_e('Close'); ?>" onclick="window.close()" /></p> 
    613 <?php       endif; 
    614  
    615             ?></div><?php 
    616  
    617             do_action('login_footer'); 
    618  
    619             if ( $customize_login ) : ?> 
     606            login_header( '', $message ); ?> 
     607 
     608            <?php if ( ! $customize_login ) : ?> 
     609            <script type="text/javascript">setTimeout( function(){window.close()}, 8000);</script> 
     610            <p class="alignright"> 
     611            <input type="button" class="button-primary" value="<?php esc_attr_e('Close'); ?>" onclick="window.close()" /></p> 
     612            <?php endif; ?> 
     613            </div> 
     614            <?php do_action( 'login_footer' ); ?> 
     615            <?php if ( $customize_login ) : ?> 
    620616                <script type="text/javascript">setTimeout( function(){ new wp.customize.Messenger({ url: '<?php echo wp_customize_url(); ?>', channel: 'login' }).send('login') }, 1000 );</script> 
    621 <?php       endif; ?> 
     617            <?php endif; ?> 
    622618            </body></html> 
    623619<?php       exit; 
Note: See TracChangeset for help on using the changeset viewer.