framework/src/Http/Rememberer.php
2018-07-21 17:20:43 +09:30

60 lines
1.3 KiB
PHP

<?php
/*
* This file is part of Flarum.
*
* (c) Toby Zerner <toby.zerner@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Flarum\Http;
use Dflydev\FigCookies\FigResponseCookies;
use Psr\Http\Message\ResponseInterface;
class Rememberer
{
const COOKIE_NAME = 'remember';
/**
* @var CookieFactory
*/
protected $cookie;
/**
* @param CookieFactory $cookie
*/
public function __construct(CookieFactory $cookie)
{
$this->cookie = $cookie;
}
public function remember(ResponseInterface $response, AccessToken $token)
{
$token->lifetime_seconds = 5 * 365 * 24 * 60 * 60; // 5 years
$token->save();
return FigResponseCookies::set(
$response,
$this->cookie->make(self::COOKIE_NAME, $token->token, $token->lifetime_seconds)
);
}
public function rememberUser(ResponseInterface $response, $userId)
{
$token = AccessToken::generate($userId);
return $this->remember($response, $token);
}
public function forget(ResponseInterface $response)
{
return FigResponseCookies::set(
$response,
$this->cookie->expire(self::COOKIE_NAME)
);
}
}