Http session
Library to manage session for http requests.
The goal is to break the paradigm of considering the request and response as a global environment. Request and response should be delt as transiting data. The session for a request should obey this principle as well, thus the signature Manager::start(ServerRequest): Maybe<Session>
.
Installation
composer require innmind/http-session
Usage
use Innmind\HttpSession\Manager\Native;
use Innmind\Http\{
Message\Response\Response,
Message\ServerRequest,
Message\StatusCode,
Headers,
Header\SetCookie,
Header\CookieParameter\HttpOnly,
Header\CookieParameter\Domain,
Header\Parameter\Parameter,
};
$manager = Native::of();
$request = /* an instance of ServerRequest */
$session = $manager->start($request)->match(
static fn($session) => $session,
static fn() => throw new \RuntimeException('Unable to start the exception'),
);
// inject some data in the session
$manager->save($session);
$response = new Response(
$code = StatusCode::ok,
$request->protocolVersion(),
Headers::of(
SetCookie::of(
new Parameter($session->name()->toString(), $session->id()->toString()),
new HttpOnly,
new Domain($request->url()->authority()->host()),
),
),
);
// send the response
Note: you should take a look at innmint/http-server
in order to know how to have access to an instance of ServerRequest
and send the Response
.