Make WordPress Core

Ticket #37000: pluggable.diff

File pluggable.diff, 6.0 KB (added by mikhailroot, 3 years ago)

Introduced filter wp_auth_cookie_same_site to be able to manage SameSite Auth cookies parameter.

  • src/wp-includes/pluggable.php

     
    940940                        return;
    941941                }
    942942
    943                 setcookie( $auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true );
    944                 setcookie( $auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true );
    945                 setcookie( LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true );
    946                 if ( COOKIEPATH != SITECOOKIEPATH ) {
    947                         setcookie( LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true );
     943                /**
     944                 * Allows to manage SameSite Auth Cookie header part.
     945                 * Possible values are Lax|Strict|None.
     946                 * It's natively supported since PHP 7.3.0 .
     947                 *
     948                 * @param string $same_site SameSite parameter value, default is 'Lax'.
     949                 */
     950                $same_site = apply_filters( 'wp_auth_cookie_same_site', 'Lax' );
     951
     952                // lets check PHP version if it's 7.3.0+.
     953                if ( version_compare( PHP_VERSION, '7.3.0' ) >= 0 ) {
     954                        // lets use new setcookie function shipped with php 7.3.0 .
     955                        setcookie(
     956                                $auth_cookie_name,
     957                                $auth_cookie,
     958                                array(
     959                                        'expires'  => $expire,
     960                                        'path'     => PLUGINS_COOKIE_PATH,
     961                                        'domain'   => COOKIE_DOMAIN,
     962                                        'secure'   => $secure,
     963                                        'httponly' => true,
     964                                        'samesite' => $same_site,
     965                                )
     966                        );
     967                        setcookie(
     968                                $auth_cookie_name,
     969                                $auth_cookie,
     970                                array(
     971                                        'expires'  => $expire,
     972                                        'path'     => ADMIN_COOKIE_PATH,
     973                                        'domain'   => COOKIE_DOMAIN,
     974                                        'secure'   => $secure,
     975                                        'httponly' => true,
     976                                        'samesite' => $same_site,
     977                                )
     978                        );
     979                        setcookie(
     980                                LOGGED_IN_COOKIE,
     981                                $logged_in_cookie,
     982                                array(
     983                                        'expires'  => $expire,
     984                                        'path'     => COOKIEPATH,
     985                                        'domain'   => COOKIE_DOMAIN,
     986                                        'secure'   => $secure_logged_in_cookie,
     987                                        'httponly' => true,
     988                                        'samesite' => $same_site,
     989                                )
     990                        );
     991                        if ( COOKIEPATH != SITECOOKIEPATH ) {
     992                                setcookie(
     993                                        LOGGED_IN_COOKIE,
     994                                        $logged_in_cookie,
     995                                        array(
     996                                                'expires'  => $expire,
     997                                                'path'     => SITECOOKIEPATH,
     998                                                'domain'   => COOKIE_DOMAIN,
     999                                                'secure'   => $secure_logged_in_cookie,
     1000                                                'httponly' => true,
     1001                                                'samesite' => $same_site,
     1002                                        )
     1003                                );
     1004                        }
     1005                } else {
     1006                        setcookie( $auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true );
     1007                        setcookie( $auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true );
     1008                        setcookie( LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true );
     1009                        if ( COOKIEPATH != SITECOOKIEPATH ) {
     1010                                setcookie( LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true );
     1011                        }
    9481012                }
    9491013        }
    9501014endif;