From c1f6a2d725cfac6ba61b0599f07635cf51aa9ef3 Mon Sep 17 00:00:00 2001 From: Paulo Esteves Date: Mon, 2 May 2022 23:58:35 +0100 Subject: [PATCH 1/4] Fix Session::configure() to add cookie prefix to cookie name --- system/Session/Session.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/Session/Session.php b/system/Session/Session.php index 0b27b03fa46e..c0c39408013c 100644 --- a/system/Session/Session.php +++ b/system/Session/Session.php @@ -289,7 +289,7 @@ protected function configure() if (empty($this->sessionCookieName)) { $this->sessionCookieName = ini_get('session.name'); } else { - ini_set('session.name', $this->sessionCookieName); + ini_set('session.name', $this->cookie->getPrefix() . $this->sessionCookieName); } $sameSite = $this->cookie->getSameSite() ?: ucfirst(Cookie::SAMESITE_LAX); From e39f2aa03a06c78c02ae98ff7b82378901ba561d Mon Sep 17 00:00:00 2001 From: Paulo Esteves Date: Tue, 3 May 2022 19:55:33 +0100 Subject: [PATCH 2/4] Update __constructor() and configure() to add cookie prefix to cookie name --- system/Session/Session.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/system/Session/Session.php b/system/Session/Session.php index c0c39408013c..99236e7efd7b 100644 --- a/system/Session/Session.php +++ b/system/Session/Session.php @@ -188,6 +188,7 @@ public function __construct(SessionHandlerInterface $driver, App $config) $cookie = config('Cookie'); $this->cookie = new Cookie($this->sessionCookieName, '', [ + 'prefix' => $cookie->prefix ?? $config->cookiePrefix, 'expires' => $this->sessionExpiration === 0 ? 0 : time() + $this->sessionExpiration, 'path' => $cookie->path ?? $config->cookiePath, 'domain' => $cookie->domain ?? $config->cookieDomain, @@ -289,7 +290,7 @@ protected function configure() if (empty($this->sessionCookieName)) { $this->sessionCookieName = ini_get('session.name'); } else { - ini_set('session.name', $this->cookie->getPrefix() . $this->sessionCookieName); + ini_set('session.name', $this->cookie->getPrefixedName()); } $sameSite = $this->cookie->getSameSite() ?: ucfirst(Cookie::SAMESITE_LAX); From 32945a446f4bdfdab3b58d74b8911af883b9ae79 Mon Sep 17 00:00:00 2001 From: Paulo Esteves Date: Tue, 3 May 2022 19:58:57 +0100 Subject: [PATCH 3/4] Add tests --- tests/system/Session/SessionTest.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/system/Session/SessionTest.php b/tests/system/Session/SessionTest.php index 574ffaf99ce9..74bfcca2211c 100644 --- a/tests/system/Session/SessionTest.php +++ b/tests/system/Session/SessionTest.php @@ -644,4 +644,22 @@ public function testExpiresOnClose() $this->assertCount(1, $cookies); $this->assertSame(0, $cookies[0]->getExpiresTimestamp()); } + + public function testCookieCreatedHasNameWithPrefix() + { + $config = new CookieConfig(); + $config->prefix = 'test_'; + Factories::injectMock('config', CookieConfig::class, $config); + + $session = $this->getInstance(['sessionCookieName'=>'ci_session']); + + $session->start(); + + $cookies = $session->cookies; + $this->assertCount(1, $cookies); + $this->assertSame('test_', $cookies[0]->getPrefix()); + $this->assertSame('ci_session', $cookies[0]->getName()); + $this->assertSame('test_ci_session', $cookies[0]->getPrefixedName()); + $this->assertSame('test_ci_session', ini_get('session.name')); + } } From c9682cd7cb6ea0cd163698416b68c42c182fe3dd Mon Sep 17 00:00:00 2001 From: Paulo Esteves Date: Tue, 3 May 2022 20:11:40 +0100 Subject: [PATCH 4/4] Apply styles guides to tests --- tests/system/Session/SessionTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/system/Session/SessionTest.php b/tests/system/Session/SessionTest.php index 74bfcca2211c..c638e98822b1 100644 --- a/tests/system/Session/SessionTest.php +++ b/tests/system/Session/SessionTest.php @@ -647,11 +647,11 @@ public function testExpiresOnClose() public function testCookieCreatedHasNameWithPrefix() { - $config = new CookieConfig(); + $config = new CookieConfig(); $config->prefix = 'test_'; Factories::injectMock('config', CookieConfig::class, $config); - $session = $this->getInstance(['sessionCookieName'=>'ci_session']); + $session = $this->getInstance(['sessionCookieName' => 'ci_session']); $session->start();