2019-11-15 14:47:51 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Middleware;
|
|
|
|
|
|
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
|
|
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;
|
|
|
|
|
|
|
|
class RememberMiddleware extends Middleware
|
|
|
|
{
|
|
|
|
/**
|
2019-11-23 12:18:00 +00:00
|
|
|
* @param Request $request
|
|
|
|
* @param RequestHandler $handler
|
2019-11-20 17:49:31 +00:00
|
|
|
*
|
2019-11-15 14:47:51 +00:00
|
|
|
* @return Response
|
2019-11-23 12:18:00 +00:00
|
|
|
* @throws \Exception
|
2019-11-15 14:47:51 +00:00
|
|
|
*/
|
|
|
|
public function __invoke(Request $request, RequestHandler $handler)
|
|
|
|
{
|
|
|
|
if (!$this->session->get('logged', false) && !empty($request->getCookieParams()['remember'])) {
|
2020-03-01 16:03:07 +00:00
|
|
|
[$selector, $token] = explode(':', $request->getCookieParams()['remember']);
|
2019-11-15 14:47:51 +00:00
|
|
|
|
2020-07-28 06:51:56 +00:00
|
|
|
$user = $this->database->query(
|
|
|
|
'SELECT `id`, `username`,`is_admin`, `active`, `remember_token`, `current_disk_quota`, `max_disk_quota`, `copy_raw` FROM `users` WHERE `remember_selector` = ? AND `remember_expire` > ? LIMIT 1',
|
2019-11-21 17:00:47 +00:00
|
|
|
[$selector, date('Y-m-d\TH:i:s', time())]
|
2019-11-15 14:47:51 +00:00
|
|
|
)->fetch();
|
|
|
|
|
2020-03-01 16:03:07 +00:00
|
|
|
if ($user && password_verify($token, $user->remember_token) && $user->active) {
|
2020-04-06 17:24:26 +00:00
|
|
|
$this->session->set('logged', true)
|
|
|
|
->set('user_id', $user->id)
|
|
|
|
->set('username', $user->username)
|
|
|
|
->set('admin', $user->is_admin)
|
|
|
|
->set('copy_raw', $user->copy_raw);
|
2020-03-01 16:03:07 +00:00
|
|
|
$this->setSessionQuotaInfo($user->current_disk_quota, $user->max_disk_quota);
|
2020-04-06 17:24:26 +00:00
|
|
|
$this->refreshRememberCookie($user->id);
|
2019-11-15 14:47:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $handler->handle($request);
|
|
|
|
}
|
2019-11-20 17:49:31 +00:00
|
|
|
}
|