WordPress.org

Make WordPress Core

Ticket #7001: admin_ssl.2.diff

File admin_ssl.2.diff, 10.2 KB (added by ryan, 10 years ago)

Use site_url() in script loader.

  • wp-includes/functions.php

     
    17651765        return 0;
    17661766}
    17671767
     1768function is_ssl() {
     1769        return ( 'on' == strtolower($_SERVER['HTTPS']) ) ? true : false;
     1770}
    17681771?>
  • wp-includes/link-template.php

     
    774774
    775775        return apply_filters('shortcut_link', $link);
    776776}
     777
     778// return the site_url option, using https if is_ssl() is true
     779// if $scheme is 'http' or 'https' it will override is_ssl()
     780function site_url($scheme = null) {
     781        // should the list of allowed schemes be maintained elsewhere?
     782        if ( !in_array($scheme, array('http', 'https')) )
     783                $scheme = ( is_ssl() ? 'https' : 'http' );
     784               
     785        return str_replace( 'http://', "{$scheme}://", get_option('siteurl') );
     786}
     787
     788function admin_url($path = '') {
     789        global $_wp_admin_url;
     790
     791        $url = site_url() . '/wp-admin/';
     792
     793        if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
     794                $url .= ltrim($path, '/');
     795
     796        return $url;
     797}
     798
     799function includes_url($path = '') {
     800        global $_wp_includes_url;
     801
     802        $url = site_url() . '/' . WPINC . '/';
     803
     804        if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
     805                $url .= ltrim($path, '/');
     806
     807        return $url;
     808}
     809
    777810?>
  • wp-includes/general-template.php

     
    11391139        if ( defined('WP_INSTALLING') ) {
    11401140                $_file = "./$file.css";
    11411141        } else {
    1142                 $_file = get_option( 'siteurl' ) . "/wp-admin/$file.css";
     1142                $_file = admin_url("$file.css");
    11431143        }
    11441144        $_file = add_query_arg( 'version', get_bloginfo( 'version' ),  $_file );
    11451145
  • wp-includes/pluggable.php

     
    469469 */
    470470function wp_validate_auth_cookie($cookie = '') {
    471471        if ( empty($cookie) ) {
    472                 if ( empty($_COOKIE[AUTH_COOKIE]) )
     472                if ( is_ssl() )
     473                        $cookie_name = SECURE_AUTH_COOKIE;
     474                else
     475                        $cookie_name = AUTH_COOKIE;
     476
     477                if ( empty($_COOKIE[$cookie_name]) )
    473478                        return false;
    474                 $cookie = $_COOKIE[AUTH_COOKIE];
     479                $cookie = $_COOKIE[$cookie_name];
    475480        }
    476481
    477482        $cookie_elements = explode('|', $cookie);
     
    514519 *
    515520 * @param int $user_id User ID
    516521 * @param int $expiration Cookie expiration in seconds
     522 * @param bool $secure Whether the cookie is for https delivery only or not.  Not used by default.  For plugin use.
    517523 * @return string Authentication cookie contents
    518524 */
    519 function wp_generate_auth_cookie($user_id, $expiration) {
     525function wp_generate_auth_cookie($user_id, $expiration, $secure = false) {
    520526        $user = get_userdata($user_id);
    521527
    522528        $key = wp_hash($user->user_login . '|' . $expiration);
     
    524530
    525531        $cookie = $user->user_login . '|' . $expiration . '|' . $hash;
    526532
    527         return apply_filters('auth_cookie', $cookie, $user_id, $expiration);
     533        return apply_filters('auth_cookie', $cookie, $user_id, $expiration, $secure);
    528534}
    529535endif;
    530536
     
    550556                $expire = 0;
    551557        }
    552558
    553         $cookie = wp_generate_auth_cookie($user_id, $expiration);
     559        if ( is_ssl() ) {
     560                $secure = true;
     561                $cookie_name = SECURE_AUTH_COOKIE;
     562        } else {
     563                $secure = false;
     564                $cookie_name = AUTH_COOKIE;
     565        }
    554566
    555         do_action('set_auth_cookie', $cookie, $expire);
     567        $cookie = wp_generate_auth_cookie($user_id, $expiration, $secure);
    556568
    557         setcookie(AUTH_COOKIE, $cookie, $expire, COOKIEPATH, COOKIE_DOMAIN);
     569        do_action('set_auth_cookie', $cookie, $expire, $secure);
     570
     571        setcookie($cookie_name, $cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure);
    558572        if ( COOKIEPATH != SITECOOKIEPATH )
    559                 setcookie(AUTH_COOKIE, $cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN);
     573                setcookie($cookie_name, $cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure);
    560574}
    561575endif;
    562576
     
    569583function wp_clear_auth_cookie() {
    570584        setcookie(AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
    571585        setcookie(AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
     586        setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
     587        setcookie(SECURE_AUTH_COOKIE, ' ', time() - 31536000, SITECOOKIEPATH, COOKIE_DOMAIN);
    572588
    573589        // Old cookies
    574590        setcookie(USER_COOKIE, ' ', time() - 31536000, COOKIEPATH, COOKIE_DOMAIN);
     
    604620 */
    605621function auth_redirect() {
    606622        // Checks if a user is logged in, if not redirects them to the login page
    607         if ( (!empty($_COOKIE[AUTH_COOKIE]) &&
    608                                 !wp_validate_auth_cookie($_COOKIE[AUTH_COOKIE])) ||
    609                         (empty($_COOKIE[AUTH_COOKIE])) ) {
    610                 nocache_headers();
    611623
    612                 wp_redirect(get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode($_SERVER['REQUEST_URI']));
    613                 exit();
     624        if ( is_ssl() || (defined('FORCE_SSL_LOGIN') && FORCE_SSL_LOGIN) )
     625                $secure = true;
     626        else
     627                $secure = false;
     628
     629        // If https is required and request is http, redirect
     630        if ( $secure && !is_ssl() ) {
     631                if ( false !== strpos($_SERVER['REQUEST_URI'], 'http') ) {
     632                        wp_redirect(str_replace('http://', 'https://', $_SERVER['REQUEST_URI']));
     633                        exit();
     634                } else {
     635                        wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
     636                        exit();                 
     637                }
    614638        }
     639
     640        if ( wp_validate_auth_cookie() )
     641                return;  // The cookie is good so we're done
     642
     643        // The cookie is no good so force login
     644        nocache_headers();
     645
     646        $login_url = get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode($_SERVER['REQUEST_URI']);
     647
     648        //  Redirect to https if connection is secure
     649        if ( $secure )
     650                $login_url = str_replace('http://', 'https://', $login_url);
     651        wp_redirect($login_url);
     652        exit();
    615653}
    616654endif;
    617655
  • wp-includes/script-loader.php

     
    77require( ABSPATH . WPINC . '/functions.wp-styles.php' );
    88
    99function wp_default_scripts( &$scripts ) {
    10         $scripts->base_url = get_option( 'siteurl' );
     10        $scripts->base_url = site_url();
    1111        $scripts->default_version = get_bloginfo( 'version' );
    1212
    1313        $scripts->add( 'common', '/wp-admin/js/common.js', array('jquery'), '20080318' );
     
    5050
    5151        $scripts->add( 'wp-lists', '/wp-includes/js/wp-lists.js', array('wp-ajax-response'), '20080411' );
    5252        $scripts->localize( 'wp-lists', 'wpListL10n', array(
    53                 'url' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php'
     53                'url' => admin_url('admin-ajax.php')
    5454        ) );
    5555
    5656        $scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/scriptaculous.js', array('prototype'), '1.8.0');
     
    129129                $scripts->add( 'upload', '/wp-admin/js/upload.js', array('jquery'), '20070518' );
    130130                $scripts->add( 'postbox', '/wp-admin/js/postbox.js', array('jquery'), '20080128' );
    131131                $scripts->localize( 'postbox', 'postboxL10n', array(
    132                         'requestFile' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php',
     132                        'requestFile' => admin_url('admin-ajax.php'),
    133133                ) );
    134134                $scripts->add( 'slug', '/wp-admin/js/slug.js', array('jquery'), '20080208' );
    135135                $scripts->localize( 'slug', 'slugL10n', array(
    136                         'requestFile' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php',
     136                        'requestFile' => admin_url('admin-ajax.php'),
    137137                        'save' => __('Save'),
    138138                        'cancel' => __('Cancel'),
    139139                ) );
     
    204204}
    205205
    206206function wp_default_styles( &$styles ) {
    207         $styles->base_url = get_option( 'siteurl' );
     207        $styles->base_url = site_url();
    208208        $styles->default_version = get_bloginfo( 'version' );
    209209        $styles->text_direction = 'rtl' == get_bloginfo( 'text_direction' ) ? 'rtl' : 'ltr';
    210210
     
    258258                'autosaveInterval' => AUTOSAVE_INTERVAL,
    259259                'previewPageText' => __('Preview this Page'),
    260260                'previewPostText' => __('Preview this Post'),
    261                 'requestFile' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php',
     261                'requestFile' => admin_url('admin-ajax.php'),
    262262                'savingText' => __('Saving Draft…')
    263263        ) );
    264264}
  • wp-settings.php

     
    311311
    312312/**
    313313 * It is possible to define this in wp-config.php
     314 * @since 2.6
     315 */
     316if ( !defined('SECURE_AUTH_COOKIE') )
     317        define('SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH);
     318
     319/**
     320 * It is possible to define this in wp-config.php
    314321 * @since 2.3.0
    315322 */
    316323if ( !defined('TEST_COOKIE') )
  • wp-admin/includes/dashboard.php

     
    225225        }
    226226
    227227        if ( $widget_feed_link )
    228                 $links[] = '<img class="rss-icon" src="' . get_option( 'siteurl' ) . '/' . WPINC . '/images/rss.png" alt="' . __( 'rss icon' ) . '" /> <a href="' . clean_url( $widget_feed_link ) . '">' . __( 'RSS' ) . '</a>';
     228                $links[] = '<img class="rss-icon" src="' . includes_url('images/rss.png') . '" alt="' . __( 'rss icon' ) . '" /> <a href="' . clean_url( $widget_feed_link ) . '">' . __( 'RSS' ) . '</a>';
    229229
    230230        $links = apply_filters( "wp_dashboard_widget_links_$widget_id", $links );
    231231
  • wp-admin/admin.php

     
    2626
    2727wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'popuptitle', 'popupurl', 'text', 'trackback', 'pingback'));
    2828
    29 wp_admin_css_color('classic', __('Classic'), get_option( 'siteurl' ) . "/wp-admin/css/colors-classic.css", array('#07273E', '#14568A', '#D54E21', '#2683AE'));
    30 wp_admin_css_color('fresh', __('Fresh'), get_option( 'siteurl' ) . "/wp-admin/css/colors-fresh.css", array('#464646', '#CEE1EF', '#D54E21', '#2683AE'));
     29wp_admin_css_color('classic', __('Classic'), admin_url("css/colors-classic.css"), array('#07273E', '#14568A', '#D54E21', '#2683AE'));
     30wp_admin_css_color('fresh', __('Fresh'), admin_url("css/colors-fresh.css"), array('#464646', '#CEE1EF', '#D54E21', '#2683AE'));
    3131
    3232wp_enqueue_script( 'common' );
    3333wp_enqueue_script( 'jquery-color' );