Make WordPress Core

Changeset 8701


Ignore:
Timestamp:
08/21/2008 05:40:38 PM (18 years ago)
Author:
ryan
Message:

Option to force SSL. see #7561

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/user.php

    r8646 r8701  
    7474                $user->rich_editing = 'false';
    7575
     76        $user->use_ssl = 0;
     77        if ( !empty($_POST['use_ssl']) )
     78                $user->use_ssl = 1;
     79
    7680        if ( !$update )
    7781                $user->admin_color = 'fresh';  // Default to fresh for new users.
  • trunk/wp-admin/user-edit.php

    r8656 r8701  
    100100$user_id = (int) $user_id;
    101101
    102 if ( !$user_id )
     102if ( !$user_id ) {
    103103        if ( $is_profile_page ) {
    104104                $current_user = wp_get_current_user();
     
    107107                wp_die(__('Invalid user ID.'));
    108108        }
     109}
     110
     111// Optional SSL preference that can be turned on by hooking to the 'personal_options' action
     112function use_ssl_preference($user) {
     113?>
     114        <tr>
     115                <th scope="row"><?php _e('Use https')?></th>
     116                <td><label for="use_ssl"><input name="use_ssl" type="checkbox" id="use_ssl" value="1" <?php checked('1', $user->use_ssl); ?> /> <?php _e('Always use https when visiting the admin'); ?></label></td>
     117        </tr>
     118<?php
     119}
    109120
    110121switch ($action) {
     
    130141$errors = edit_user($user_id);
    131142
    132 if( !is_wp_error( $errors ) ) {
     143if ( !is_wp_error( $errors ) ) {
    133144        $redirect = ($is_profile_page? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true";
    134145        $redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect);
     
    141152
    142153if ( !current_user_can('edit_user', $user_id) )
    143                 wp_die(__('You do not have permission to edit this user.'));
     154        wp_die(__('You do not have permission to edit this user.'));
    144155
    145156include ('admin-header.php');
     
    210221</fieldset></td>
    211222</tr>
    212 <?php endif; ?>
     223<?php
     224endif;
     225do_action('personal_options', $profileuser);
     226?>
    213227</table>
    214228<?php
    215         if ( $is_profile_page ) {
    216                 do_action('profile_personal_options');
    217         }
     229        if ( $is_profile_page )
     230                do_action('profile_personal_options', $profileuser);
    218231?>
    219232
  • trunk/wp-includes/pluggable.php

    r8696 r8701  
    704704        }
    705705
    706         if ( wp_validate_auth_cookie() )
     706        if ( $user_id = wp_validate_auth_cookie() ) {
     707                // If the user wants ssl but the session is not ssl, redirect.
     708                if ( !$secure && get_user_option('use_ssl', $user_id) ) {
     709                        if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
     710                                wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
     711                                exit();
     712                        } else {
     713                                wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
     714                                exit();
     715                        }
     716                }
     717
    707718                return;  // The cookie is good so we're done
     719        }
    708720
    709721        // The cookie is no good so force login
  • trunk/wp-includes/registration.php

    r7313 r8701  
    159159        $admin_color = preg_replace('|[^a-z0-9 _.\-@]|i', '', $admin_color);
    160160
     161        if ( empty($use_ssl) )
     162                $use_ssl = 0;
     163
    161164        if ( empty($user_registered) )
    162165                $user_registered = gmdate('Y-m-d H:i:s');
     
    182185        update_usermeta( $user_id, 'rich_editing', $rich_editing);
    183186        update_usermeta( $user_id, 'admin_color', $admin_color);
     187        update_usermeta( $user_id, 'use_ssl', $use_ssl);
    184188
    185189        if ( $update && isset($role) ) {
  • trunk/wp-login.php

    r8600 r8701  
    408408case 'login' :
    409409default:
    410         if ( isset( $_REQUEST['redirect_to'] ) )
     410        $secure_cookie = '';
     411
     412        // If the user wants ssl but the session is not ssl, force a secure cookie.
     413        if ( !empty($_POST['log']) && !force_ssl_admin() ) {
     414                $user_name = sanitize_user($_POST['log']);
     415                if ( $user = get_userdatabylogin($user_name) ) {
     416                        if ( get_user_option('use_ssl', $user->ID) ) {
     417                                $secure_cookie = true;
     418                                force_ssl_admin(true);
     419                        }
     420                }
     421        }
     422
     423        if ( isset( $_REQUEST['redirect_to'] ) ) {
    411424                $redirect_to = $_REQUEST['redirect_to'];
    412         else
     425                // Redirect to https if user wants ssl
     426                if ( $secure_cookie )
     427                        $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to);
     428        } else {
    413429                $redirect_to = admin_url();
    414 
    415         if ( is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) )
     430        }
     431
     432        if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) )
    416433                $secure_cookie = false;
    417         else
    418                 $secure_cookie = '';
    419434
    420435        $user = wp_signon('', $secure_cookie);
Note: See TracChangeset for help on using the changeset viewer.