1
0
mirror of https://github.com/flarum/core.git synced 2025-10-14 16:34:26 +02:00

Add cookie factory

This commit is contained in:
Sajjad Hashemian
2016-12-21 23:59:38 +03:30
parent 8aa70de765
commit aeef45b3cd
3 changed files with 98 additions and 17 deletions

View File

@@ -12,27 +12,41 @@
namespace Flarum\Http;
use Dflydev\FigCookies\FigResponseCookies;
use Dflydev\FigCookies\SetCookie;
use Psr\Http\Message\ResponseInterface;
class Rememberer
{
protected $cookieName = 'flarum_remember';
/**
* @var CookieFactory
*/
protected $cookie;
/**
* Rememberer constructor.
* @param CookieFactoy $cookie
*/
public function __construct(CookieFactory $cookie)
{
$this->cookie = $cookie;
}
public function remember(ResponseInterface $response, AccessToken $token, $session = false)
{
$cookie = $this->createCookie()->withValue($token->id);
$lifetime = null;
if (! $session) {
$lifetime = 60 * 60 * 24 * 14;
$token->lifetime = $lifetime;
$token->save();
$cookie = $cookie->withMaxAge($lifetime);
}
return FigResponseCookies::set($response, $cookie);
return FigResponseCookies::set(
$response,
$this->cookie->make($this->cookieName, $token->id, $lifetime)
);
}
public function rememberUser(ResponseInterface $response, $userId)
@@ -46,11 +60,4 @@ class Rememberer
{
return FigResponseCookies::expire($response, $this->cookieName);
}
private function createCookie()
{
return SetCookie::create($this->cookieName)
->withPath('/')
->withHttpOnly(true);
}
}