Skip to content

Commit df034eb

Browse files
committed
refactor: use Config\Session
1 parent 53fd4ab commit df034eb

8 files changed

Lines changed: 88 additions & 29 deletions

File tree

app/Config/App.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class App extends BaseConfig
243243
*
244244
* @deprecated use Config\Session::$DBGroup instead.
245245
*/
246-
public ?bool $sessionDBGroup = null;
246+
public ?string $sessionDBGroup = null;
247247

248248
/**
249249
* --------------------------------------------------------------------------

app/Config/Session.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,5 @@ class Session extends BaseConfig
9797
*
9898
* DB Group for the database session.
9999
*/
100-
public ?bool $DBGroup = null;
100+
public ?string $DBGroup = null;
101101
}

system/Session/Handlers/BaseHandler.php

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Config\App as AppConfig;
1515
use Config\Cookie as CookieConfig;
16+
use Config\Session as SessionConfig;
1617
use Psr\Log\LoggerAwareTrait;
1718
use SessionHandlerInterface;
1819

@@ -106,6 +107,21 @@ abstract class BaseHandler implements SessionHandlerInterface
106107

107108
public function __construct(AppConfig $config, string $ipAddress)
108109
{
110+
/** @var SessionConfig|null $session */
111+
$session = config('Session');
112+
113+
// Store Session configurations
114+
if ($session instanceof SessionConfig) {
115+
$this->cookieName = $session->cookieName;
116+
$this->matchIP = $session->matchIP;
117+
$this->savePath = $session->savePath;
118+
} else {
119+
// `Config/Session.php` is absence
120+
$this->cookieName = $config->sessionCookieName;
121+
$this->matchIP = $config->sessionMatchIP;
122+
$this->savePath = $config->sessionSavePath;
123+
}
124+
109125
/** @var CookieConfig|null $cookie */
110126
$cookie = config('Cookie');
111127

@@ -123,10 +139,7 @@ public function __construct(AppConfig $config, string $ipAddress)
123139
$this->cookieSecure = $config->cookieSecure;
124140
}
125141

126-
$this->cookieName = $config->sessionCookieName;
127-
$this->matchIP = $config->sessionMatchIP;
128-
$this->savePath = $config->sessionSavePath;
129-
$this->ipAddress = $ipAddress;
142+
$this->ipAddress = $ipAddress;
130143
}
131144

132145
/**

system/Session/Handlers/DatabaseHandler.php

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use CodeIgniter\Session\Exceptions\SessionException;
1717
use Config\App as AppConfig;
1818
use Config\Database;
19+
use Config\Session as SessionConfig;
1920
use ReturnTypeWillChange;
2021

2122
/**
@@ -66,16 +67,25 @@ class DatabaseHandler extends BaseHandler
6667
public function __construct(AppConfig $config, string $ipAddress)
6768
{
6869
parent::__construct($config, $ipAddress);
69-
$this->table = $config->sessionSavePath;
70+
71+
/** @var SessionConfig|null $session */
72+
$session = config('Session');
73+
74+
// Store Session configurations
75+
if ($session instanceof SessionConfig) {
76+
$this->table = $session->savePath;
77+
$this->DBGroup = $session->DBGroup ?? config(Database::class)->defaultGroup;
78+
} else {
79+
// `Config/Session.php` is absence
80+
$this->table = $config->sessionSavePath;
81+
$this->DBGroup = $config->sessionDBGroup ?? config(Database::class)->defaultGroup;
82+
}
7083

7184
if (empty($this->table)) {
7285
throw SessionException::forMissingDatabaseTable();
7386
}
7487

75-
$this->DBGroup = $config->sessionDBGroup ?? config(Database::class)->defaultGroup;
76-
77-
$this->db = Database::connect($this->DBGroup);
78-
88+
$this->db = Database::connect($this->DBGroup);
7989
$this->platform = $this->db->getPlatform();
8090
}
8191

system/Session/Handlers/FileHandler.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ public function __construct(AppConfig $config, string $ipAddress)
6767
{
6868
parent::__construct($config, $ipAddress);
6969

70-
if (! empty($config->sessionSavePath)) {
71-
$this->savePath = rtrim($config->sessionSavePath, '/\\');
72-
ini_set('session.save_path', $config->sessionSavePath);
70+
if (! empty($this->savePath)) {
71+
$this->savePath = rtrim($this->savePath, '/\\');
72+
ini_set('session.save_path', $this->savePath);
7373
} else {
7474
$sessionPath = rtrim(ini_get('session.save_path'), '/\\');
7575

@@ -80,8 +80,6 @@ public function __construct(AppConfig $config, string $ipAddress)
8080
$this->savePath = $sessionPath;
8181
}
8282

83-
$this->matchIP = $config->sessionMatchIP;
84-
8583
$this->configureSessionIDRegex();
8684
}
8785

system/Session/Handlers/MemcachedHandler.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use CodeIgniter\I18n\Time;
1515
use CodeIgniter\Session\Exceptions\SessionException;
1616
use Config\App as AppConfig;
17+
use Config\Session as SessionConfig;
1718
use Memcached;
1819
use ReturnTypeWillChange;
1920

@@ -57,6 +58,17 @@ public function __construct(AppConfig $config, string $ipAddress)
5758
{
5859
parent::__construct($config, $ipAddress);
5960

61+
/** @var SessionConfig|null $session */
62+
$session = config('Session');
63+
64+
// Store Session configurations
65+
if ($session instanceof SessionConfig) {
66+
$this->sessionExpiration = $session->expiration;
67+
} else {
68+
// `Config/Session.php` is absence
69+
$this->sessionExpiration = $config->sessionExpiration;
70+
}
71+
6072
if (empty($this->savePath)) {
6173
throw SessionException::forEmptySavepath();
6274
}
@@ -68,8 +80,6 @@ public function __construct(AppConfig $config, string $ipAddress)
6880
if (! empty($this->keyPrefix)) {
6981
ini_set('memcached.sess_prefix', $this->keyPrefix);
7082
}
71-
72-
$this->sessionExpiration = $config->sessionExpiration;
7383
}
7484

7585
/**

system/Session/Handlers/RedisHandler.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use CodeIgniter\I18n\Time;
1515
use CodeIgniter\Session\Exceptions\SessionException;
1616
use Config\App as AppConfig;
17+
use Config\Session as SessionConfig;
1718
use Redis;
1819
use RedisException;
1920
use ReturnTypeWillChange;
@@ -69,15 +70,26 @@ public function __construct(AppConfig $config, string $ipAddress)
6970
{
7071
parent::__construct($config, $ipAddress);
7172

73+
/** @var SessionConfig|null $session */
74+
$session = config('Session');
75+
76+
// Store Session configurations
77+
if ($session instanceof SessionConfig) {
78+
$this->sessionExpiration = empty($session->expiration)
79+
? (int) ini_get('session.gc_maxlifetime')
80+
: (int) $session->expiration;
81+
} else {
82+
// `Config/Session.php` is absence
83+
$this->sessionExpiration = empty($config->sessionExpiration)
84+
? (int) ini_get('session.gc_maxlifetime')
85+
: (int) $config->sessionExpiration;
86+
}
87+
7288
$this->setSavePath();
7389

7490
if ($this->matchIP === true) {
7591
$this->keyPrefix .= $this->ipAddress . ':';
7692
}
77-
78-
$this->sessionExpiration = empty($config->sessionExpiration)
79-
? (int) ini_get('session.gc_maxlifetime')
80-
: (int) $config->sessionExpiration;
8193
}
8294

8395
protected function setSavePath(): void

system/Session/Session.php

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Config\App;
1717
use Config\Cookie as CookieConfig;
1818
use Config\Services;
19+
use Config\Session as SessionConfig;
1920
use Psr\Log\LoggerAwareTrait;
2021
use SessionHandlerInterface;
2122

@@ -164,13 +165,28 @@ public function __construct(SessionHandlerInterface $driver, App $config)
164165
{
165166
$this->driver = $driver;
166167

167-
$this->sessionDriverName = $config->sessionDriver;
168-
$this->sessionCookieName = $config->sessionCookieName ?? $this->sessionCookieName;
169-
$this->sessionExpiration = $config->sessionExpiration ?? $this->sessionExpiration;
170-
$this->sessionSavePath = $config->sessionSavePath;
171-
$this->sessionMatchIP = $config->sessionMatchIP ?? $this->sessionMatchIP;
172-
$this->sessionTimeToUpdate = $config->sessionTimeToUpdate ?? $this->sessionTimeToUpdate;
173-
$this->sessionRegenerateDestroy = $config->sessionRegenerateDestroy ?? $this->sessionRegenerateDestroy;
168+
/** @var SessionConfig|null $session */
169+
$session = config('Session');
170+
171+
// Store Session configurations
172+
if ($session instanceof SessionConfig) {
173+
$this->sessionDriverName = $session->driver;
174+
$this->sessionCookieName = $session->cookieName ?? $this->sessionCookieName;
175+
$this->sessionExpiration = $session->expiration ?? $this->sessionExpiration;
176+
$this->sessionSavePath = $session->savePath;
177+
$this->sessionMatchIP = $session->matchIP ?? $this->sessionMatchIP;
178+
$this->sessionTimeToUpdate = $session->timeToUpdate ?? $this->sessionTimeToUpdate;
179+
$this->sessionRegenerateDestroy = $session->regenerateDestroy ?? $this->sessionRegenerateDestroy;
180+
} else {
181+
// `Config/Session.php` is absence
182+
$this->sessionDriverName = $config->sessionDriver;
183+
$this->sessionCookieName = $config->sessionCookieName ?? $this->sessionCookieName;
184+
$this->sessionExpiration = $config->sessionExpiration ?? $this->sessionExpiration;
185+
$this->sessionSavePath = $config->sessionSavePath;
186+
$this->sessionMatchIP = $config->sessionMatchIP ?? $this->sessionMatchIP;
187+
$this->sessionTimeToUpdate = $config->sessionTimeToUpdate ?? $this->sessionTimeToUpdate;
188+
$this->sessionRegenerateDestroy = $config->sessionRegenerateDestroy ?? $this->sessionRegenerateDestroy;
189+
}
174190

175191
// DEPRECATED COOKIE MANAGEMENT
176192
$this->cookiePath = $config->cookiePath ?? $this->cookiePath;

0 commit comments

Comments
 (0)