EncryptedStore.php
TLDR
The EncryptedStore.php
file is a part of the Illuminate\Session namespace in the Demo Projects project. It contains a class called EncryptedStore
that extends the Store
class. The EncryptedStore
class is responsible for encrypting and decrypting session data using an instance of the Encrypter
class. It also provides methods to prepare session data for serialization and storage.
Methods
__construct
The __construct
method is the constructor of the EncryptedStore
class. It initializes the encrypter
property and calls the parent constructor of the Store
class.
prepareForUnserialize
The prepareForUnserialize
method takes a raw string of session data and prepares it for unserialization. It decrypts the data using the encrypter
instance. If decryption fails, it returns an empty array or JSON-encoded empty array based on the serialization
option.
prepareForStorage
The prepareForStorage
method takes serialized session data and prepares it for storage. It encrypts the data using the encrypter
instance.
getEncrypter
The getEncrypter
method returns the encrypter
instance used by the EncryptedStore
class.
<?php
namespace Illuminate\Session;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Contracts\Encryption\Encrypter as EncrypterContract;
use SessionHandlerInterface;
class EncryptedStore extends Store
{
/**
* The encrypter instance.
*
* @var \Illuminate\Contracts\Encryption\Encrypter
*/
protected $encrypter;
/**
* Create a new session instance.
*
* @param string $name
* @param \SessionHandlerInterface $handler
* @param \Illuminate\Contracts\Encryption\Encrypter $encrypter
* @param string|null $id
* @param string $serialization
* @return void
*/
public function __construct($name, SessionHandlerInterface $handler, EncrypterContract $encrypter, $id = null, $serialization = 'php')
{
$this->encrypter = $encrypter;
parent::__construct($name, $handler, $id, $serialization);
}
/**
* Prepare the raw string data from the session for unserialization.
*
* @param string $data
* @return string
*/
protected function prepareForUnserialize($data)
{
try {
return $this->encrypter->decrypt($data);
} catch (DecryptException) {
return $this->serialization === 'json' ? json_encode([]) : serialize([]);
}
}
/**
* Prepare the serialized session data for storage.
*
* @param string $data
* @return string
*/
protected function prepareForStorage($data)
{
return $this->encrypter->encrypt($data);
}
/**
* Get the encrypter instance.
*
* @return \Illuminate\Contracts\Encryption\Encrypter
*/
public function getEncrypter()
{
return $this->encrypter;
}
}