1
0
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:
Toby Zerner
2015-07-29 20:58:22 +09:30
parent 51e72336ef
commit f3ef5a123c
35 changed files with 432 additions and 419 deletions

View 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 = [
];
}

View File

@@ -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());
}
}

View File

@@ -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')
);
}

View File

@@ -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;

View File

@@ -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);