1
0
mirror of https://github.com/flarum/core.git synced 2025-07-21 08:41:17 +02:00

Introduce RequestUtil to encapsulate getting/setting actor on requests(#2449)

This commit is contained in:
Alexander Skvortsov
2021-04-07 23:33:05 -04:00
committed by GitHub
parent 809e0d2ae0
commit a554c85d8a
54 changed files with 134 additions and 56 deletions

View File

@@ -11,6 +11,7 @@ namespace Flarum\Http\Middleware;
use Flarum\Api\ApiKey;
use Flarum\Http\AccessToken;
use Flarum\Http\RequestUtil;
use Flarum\User\User;
use Illuminate\Support\Str;
use Psr\Http\Message\ResponseInterface as Response;
@@ -46,7 +47,7 @@ class AuthenticateWithHeader implements Middleware
}
if (isset($actor)) {
$request = $request->withAttribute('actor', $actor);
$request = RequestUtil::withActor($request, $actor);
$request = $request->withAttribute('bypassCsrfToken', true);
$request = $request->withoutAttribute('session');
}

View File

@@ -10,6 +10,7 @@
namespace Flarum\Http\Middleware;
use Flarum\Http\AccessToken;
use Flarum\Http\RequestUtil;
use Flarum\User\Guest;
use Illuminate\Contracts\Session\Session;
use Psr\Http\Message\ResponseInterface as Response;
@@ -27,7 +28,7 @@ class AuthenticateWithSession implements Middleware
$actor->setSession($session);
$request = $request->withAttribute('actor', $actor);
$request = RequestUtil::withActor($request, $actor);
return $handler->handle($request);
}

View File

@@ -9,6 +9,7 @@
namespace Flarum\Http\Middleware;
use Flarum\Http\RequestUtil;
use Flarum\Locale\LocaleManager;
use Illuminate\Support\Arr;
use Psr\Http\Message\ResponseInterface as Response;
@@ -33,7 +34,7 @@ class SetLocale implements Middleware
public function process(Request $request, Handler $handler): Response
{
$actor = $request->getAttribute('actor');
$actor = RequestUtil::getActor($request);
if ($actor->exists) {
$locale = $actor->getPreference('locale');

View File

@@ -0,0 +1,26 @@
<?php
/*
* This file is part of Flarum.
*
* For detailed copyright and license information, please view the
* LICENSE file that was distributed with this source code.
*/
namespace Flarum\Http;
use Flarum\User\User;
use Psr\Http\Message\ServerRequestInterface as Request;
class RequestUtil
{
public static function getActor(Request $request): User
{
return $request->getAttribute('actor');
}
public static function withActor(Request $request, User $actor): Request
{
return $request->withAttribute('actor', $actor);
}
}