$_config
$_config : array
Runtime config
Session based persistent storage for authenticated user record.
$_session : \Cake\Http\Session
Session object.
setConfig(string|array $key, mixed|null $value = null, boolean $merge = true) : $this
Sets the config.
Setting a specific value:
$this->setConfig('key', $value);
Setting a nested value:
$this->setConfig('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->setConfig(['one' => 'value', 'another' => 'value']);
string|array | $key | The key to set, or a complete array of configs. |
mixed|null | $value | The value to set. |
boolean | $merge | Whether to recursively merge or overwrite existing config, defaults to true. |
When trying to set a key that is invalid.
getConfig(string|null $key = null, mixed $default = null) : mixed
Returns the config.
Reading the whole config:
$this->getConfig();
Reading a specific value:
$this->getConfig('key');
Reading a nested value:
$this->getConfig('some.nested.key');
Reading with default value:
$this->getConfig('some-key', 'default-value');
string|null | $key | The key to get or null for the whole config. |
mixed | $default | The return value when the key does not exist. |
Config value being read.
config(string|array|null $key = null, mixed|null $value = null, boolean $merge = true) : mixed
Gets/Sets the config.
Reading the whole config:
$this->config();
Reading a specific value:
$this->config('key');
Reading a nested value:
$this->config('some.nested.key');
Setting a specific value:
$this->config('key', $value);
Setting a nested value:
$this->config('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->config(['one' => 'value', 'another' => 'value']);
string|array|null | $key | The key to get/set, or a complete array of configs. |
mixed|null | $value | The value to set. |
boolean | $merge | Whether to recursively merge or overwrite existing config, defaults to true. |
When trying to set a key that is invalid.
Config value being read, or the object itself on write operations.
configShallow(string|array $key, mixed|null $value = null) : $this
Merge provided config with existing config. Unlike `config()` which does a recursive merge for nested keys, this method does a simple merge.
Setting a specific value:
$this->configShallow('key', $value);
Setting a nested value:
$this->configShallow('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->configShallow(['one' => 'value', 'another' => 'value']);
string|array | $key | The key to set, or a complete array of configs. |
mixed|null | $value | The value to set. |
None found |
__construct(\Cake\Http\ServerRequest $request, \Cake\Http\Response $response, array $config = array())
Constructor.
\Cake\Http\ServerRequest | $request | Request instance. |
\Cake\Http\Response | $response | Response instance. |
array | $config | Configuration list. |
None found |
read() : array|null
Read user record from session.
User record if available else null.
None found |
write(array|\ArrayAccess $user) : void
Write user record to session.
The session id is also renewed to help mitigate issues with session replays.
array|\ArrayAccess | $user | User record. |
None found |
delete() : void
Delete user record from session.
The session id is also renewed to help mitigate issues with session replays.
None found |
redirectUrl(mixed $url = null) : mixed
Get/set redirect URL.
mixed | $url | Redirect URL. If |
None found |
_configRead(string|null $key) : mixed
Reads a config key.
string|null | $key | Key to read. |
None found |
_configWrite(string|array $key, mixed $value, boolean|string $merge = false) : void
Writes a config key.
string|array | $key | Key to write to. |
mixed | $value | Value to write. |
boolean|string | $merge | True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false. |
if attempting to clobber existing config
None found |
_configDelete(string $key) : void
Deletes a single config key.
string | $key | Key to delete. |
if attempting to clobber existing config
None found |
<?php
/**
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
* @link https://cakephp.org CakePHP(tm) Project
* @since 3.1.0
* @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace Cake\Auth\Storage;
use Cake\Core\InstanceConfigTrait;
use Cake\Http\Response;
use Cake\Http\ServerRequest;
/**
* Session based persistent storage for authenticated user record.
*
* @mixin \Cake\Core\InstanceConfigTrait
*/
class SessionStorage implements StorageInterface
{
use InstanceConfigTrait;
/**
* User record.
*
* Stores user record array if fetched from session or false if session
* does not have user record.
*
* @var \ArrayAccess|array|false
*/
protected $_user;
/**
* Session object.
*
* @var \Cake\Http\Session
*/
protected $_session;
/**
* Default configuration for this class.
*
* Keys:
*
* - `key` - Session key used to store user record.
* - `redirect` - Session key used to store redirect URL.
*
* @var array
*/
protected $_defaultConfig = [
'key' => 'Auth.User',
'redirect' => 'Auth.redirect'
];
/**
* Constructor.
*
* @param \Cake\Http\ServerRequest $request Request instance.
* @param \Cake\Http\Response $response Response instance.
* @param array $config Configuration list.
*/
public function __construct(ServerRequest $request, Response $response, array $config = [])
{
$this->_session = $request->getSession();
$this->setConfig($config);
}
/**
* Read user record from session.
*
* @return array|null User record if available else null.
*/
public function read()
{
if ($this->_user !== null) {
return $this->_user ?: null;
}
$this->_user = $this->_session->read($this->_config['key']) ?: false;
return $this->_user ?: null;
}
/**
* Write user record to session.
*
* The session id is also renewed to help mitigate issues with session replays.
*
* @param array|\ArrayAccess $user User record.
* @return void
*/
public function write($user)
{
$this->_user = $user;
$this->_session->renew();
$this->_session->write($this->_config['key'], $user);
}
/**
* Delete user record from session.
*
* The session id is also renewed to help mitigate issues with session replays.
*
* @return void
*/
public function delete()
{
$this->_user = false;
$this->_session->delete($this->_config['key']);
$this->_session->renew();
}
/**
* {@inheritDoc}
*/
public function redirectUrl($url = null)
{
if ($url === null) {
return $this->_session->read($this->_config['redirect']);
}
if ($url === false) {
$this->_session->delete($this->_config['redirect']);
return null;
}
$this->_session->write($this->_config['redirect'], $url);
}
}