mirror of
https://github.com/flarum/core.git
synced 2025-07-22 17:21:27 +02:00
Get admin area working again
This commit is contained in:
23
framework/core/src/Admin/Actions/ClientAction.php
Normal file
23
framework/core/src/Admin/Actions/ClientAction.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php namespace Flarum\Admin\Actions;
|
||||
|
||||
use Flarum\Support\ClientAction as BaseClientAction;
|
||||
|
||||
class ClientAction extends BaseClientAction
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $clientName = 'admin';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $layout = __DIR__.'/../../../views/admin.blade.php';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $translationKeys = [
|
||||
|
||||
];
|
||||
}
|
@@ -1,62 +0,0 @@
|
||||
<?php namespace Flarum\Admin\Actions;
|
||||
|
||||
use Dflydev\FigCookies\FigRequestCookies;
|
||||
use Flarum\Api\Client;
|
||||
use Flarum\Support\Actor;
|
||||
use Flarum\Support\HtmlAction;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Flarum\Core;
|
||||
|
||||
class IndexAction extends HtmlAction
|
||||
{
|
||||
protected $apiClient;
|
||||
|
||||
protected $actor;
|
||||
|
||||
public function __construct(Client $apiClient, Actor $actor)
|
||||
{
|
||||
$this->apiClient = $apiClient;
|
||||
$this->actor = $actor;
|
||||
}
|
||||
|
||||
protected function render(Request $request, $routeParams = [])
|
||||
{
|
||||
$config = app('db')->table('config')->whereIn('key', ['base_url', 'api_url', 'forum_title', 'welcome_title', 'welcome_message'])->lists('value', 'key');
|
||||
$data = [];
|
||||
$session = [];
|
||||
|
||||
if (($user = $this->actor->getUser()) && $user->exists) {
|
||||
$session = [
|
||||
'userId' => $user->id,
|
||||
'token' => FigRequestCookies::get($request, 'flarum_remember'),
|
||||
];
|
||||
|
||||
$response = $this->apiClient->send('Flarum\Api\Actions\Users\ShowAction', ['id' => $user->id]);
|
||||
|
||||
$data = [$response->data];
|
||||
if (isset($response->included)) {
|
||||
$data = array_merge($data, $response->included);
|
||||
}
|
||||
}
|
||||
|
||||
$view = view('flarum.admin::index')
|
||||
->with('title', 'Administration - '.Core::config('forum_title'))
|
||||
->with('config', $config)
|
||||
->with('layout', 'flarum.admin::admin')
|
||||
->with('data', $data)
|
||||
->with('session', $session);
|
||||
|
||||
$assetManager = app('flarum.admin.assetManager');
|
||||
$root = __DIR__.'/../../..';
|
||||
$assetManager->addFile([
|
||||
$root.'/js/admin/dist/app.js',
|
||||
$root.'/less/admin/app.less'
|
||||
]);
|
||||
|
||||
// event(new RenderView($view, $assetManager, $this));
|
||||
|
||||
return $view
|
||||
->with('styles', $assetManager->getCSSFiles())
|
||||
->with('scripts', $assetManager->getJSFiles());
|
||||
}
|
||||
}
|
@@ -4,6 +4,7 @@ use Flarum\Http\RouteCollection;
|
||||
use Flarum\Http\UrlGenerator;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Zend\Diactoros\Response\RedirectResponse;
|
||||
|
||||
class AdminServiceProvider extends ServiceProvider
|
||||
{
|
||||
@@ -47,7 +48,7 @@ class AdminServiceProvider extends ServiceProvider
|
||||
$routes->get(
|
||||
'/',
|
||||
'flarum.admin.index',
|
||||
$this->action('Flarum\Admin\Actions\IndexAction')
|
||||
$this->action('Flarum\Admin\Actions\ClientAction')
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<?php namespace Flarum\Admin\Middleware;
|
||||
|
||||
use Flarum\Support\Actor;
|
||||
use Flarum\Core\Models\AccessToken;
|
||||
use Flarum\Api\AccessToken;
|
||||
use Illuminate\Contracts\Container\Container;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Zend\Stratigility\MiddlewareInterface;
|
||||
@@ -9,13 +9,16 @@ use Zend\Stratigility\MiddlewareInterface;
|
||||
class LoginWithCookieAndCheckAdmin implements MiddlewareInterface
|
||||
{
|
||||
/**
|
||||
* @var Actor
|
||||
* @var Container
|
||||
*/
|
||||
protected $actor;
|
||||
protected $app;
|
||||
|
||||
public function __construct(Actor $actor)
|
||||
/**
|
||||
* @param Container $app
|
||||
*/
|
||||
public function __construct(Container $app)
|
||||
{
|
||||
$this->actor = $actor;
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -23,15 +26,13 @@ class LoginWithCookieAndCheckAdmin implements MiddlewareInterface
|
||||
*/
|
||||
public function __invoke(Request $request, Response $response, callable $out = null)
|
||||
{
|
||||
$cookies = $request->getCookieParams();
|
||||
|
||||
if (($token = $cookies['flarum_remember']) &&
|
||||
if (($token = array_get($request->getCookieParams(), 'flarum_remember')) &&
|
||||
($accessToken = AccessToken::where('id', $token)->first()) &&
|
||||
$accessToken->user->isAdmin()
|
||||
) {
|
||||
$this->actor->setUser($accessToken->user);
|
||||
$this->app->instance('flarum.actor', $accessToken->user);
|
||||
} else {
|
||||
die('ur not an admin');
|
||||
die('Access Denied');
|
||||
}
|
||||
|
||||
return $out ? $out($request, $response) : $response;
|
||||
|
@@ -41,7 +41,7 @@ class RouterMiddleware
|
||||
public function __invoke(Request $request, Response $response, callable $out = null)
|
||||
{
|
||||
$method = $request->getMethod();
|
||||
$uri = $request->getUri()->getPath();
|
||||
$uri = $request->getUri()->getPath() ?: '/';
|
||||
|
||||
$routeInfo = $this->getDispatcher()->dispatch($method, $uri);
|
||||
|
||||
|
Reference in New Issue
Block a user