From 3897df44362a6a49f1a02d94c8fe3ccff6bc700b Mon Sep 17 00:00:00 2001 From: Derixithy Date: Mon, 7 Nov 2016 20:14:52 +0100 Subject: [PATCH] Added support for cookie domain --- wire/config.php | 6 ++++++ wire/core/Session.php | 6 +++--- .../Session/SessionHandlerDB/SessionHandlerDB.module | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/wire/config.php b/wire/config.php index 94f40273..c0c32b87 100644 --- a/wire/config.php +++ b/wire/config.php @@ -274,6 +274,12 @@ $config->sessionFingerprint = 1; */ $config->sessionCookieSecure = 1; +/** + * Cookie domain + * + */ +$config->sessionCookieDomain = null; + /** * Number of session history entries to record. * diff --git a/wire/core/Session.php b/wire/core/Session.php index 8721d874..fc55f59c 100644 --- a/wire/core/Session.php +++ b/wire/core/Session.php @@ -738,7 +738,7 @@ class Session extends Wire implements \IteratorAggregate { $this->set('_user', 'challenge', $challenge); $secure = $this->config->sessionCookieSecure ? (bool) $this->config->https : false; // set challenge cookie to last 30 days (should be longer than any session would feasibly last) - setcookie(session_name() . '_challenge', $challenge, time()+60*60*24*30, '/', null, $secure, true); // PR #1264 + setcookie(session_name() . '_challenge', $challenge, time()+60*60*24*30, '/', $this->config->sessionCookieDomain, $secure, true); // PR #1264 } if($this->config->sessionFingerprint) { @@ -892,10 +892,10 @@ class Session extends Wire implements \IteratorAggregate { $time = time() - 42000; $secure = $this->config->sessionCookieSecure ? (bool) $this->config->https : false; if(isset($_COOKIE[$sessionName])) { - setcookie($sessionName, '', $time, '/', null, $secure, true); + setcookie($sessionName, '', $time, '/', $this->config->sessionCookieDomain, $secure, true); } if(isset($_COOKIE[$sessionName . "_challenge"])) { - setcookie($sessionName . "_challenge", '', $time, '/', null, $secure, true); + setcookie($sessionName . "_challenge", '', $time, '/', $this->config->sessionCookieDomain, $secure, true); } } diff --git a/wire/modules/Session/SessionHandlerDB/SessionHandlerDB.module b/wire/modules/Session/SessionHandlerDB/SessionHandlerDB.module index 03a11018..ac499817 100644 --- a/wire/modules/Session/SessionHandlerDB/SessionHandlerDB.module +++ b/wire/modules/Session/SessionHandlerDB/SessionHandlerDB.module @@ -150,7 +150,7 @@ class SessionHandlerDB extends WireSessionHandler implements Module, Configurabl $query = $database->prepare("DELETE FROM `$table` WHERE id=:id"); $query->execute(array(":id" => $id)); $secure = $this->wire('config')->sessionCookieSecure ? (bool) $this->config->https : false; - setcookie(session_name(), '', time()-42000, '/', null, $secure, true); + setcookie(session_name(), '', time()-42000, '/', $this->config->sessionCookieDomain, $secure, true); return true; }