Added some debugging messages (turned off by default)

This commit is contained in:
Matias Griese
2020-02-10 22:19:39 +02:00
parent 98f2a65874
commit 20ae10bcb4
3 changed files with 39 additions and 3 deletions

View File

@@ -4,6 +4,8 @@
1. [](#new) 1. [](#new)
* Pass phpstan level 1 tests * Pass phpstan level 1 tests
* Updated semver library to v1.5 * Updated semver library to v1.5
* [](#improved)
* Added some debugging messages (turned off by default)
# v1.10.0-rc.5 # v1.10.0-rc.5
## 02/03/2020 ## 02/03/2020

View File

@@ -300,9 +300,9 @@ class AdminPlugin extends Plugin
$form = $event['form']; $form = $event['form'];
$action = $event['action']; $action = $event['action'];
Admin::DEBUG && Admin::addDebugMessage('Admin Form: ' . $action);
switch ($action) { switch ($action) {
case 'register_admin_user': case 'register_admin_user':
if (Admin::doAnyUsersExist()) { if (Admin::doAnyUsersExist()) {
throw new \RuntimeException('A user account already exists, please create an admin account manually.'); throw new \RuntimeException('A user account already exists, please create an admin account manually.');
} }
@@ -455,6 +455,7 @@ class AdminPlugin extends Plugin
// Force SSL with redirect if required // Force SSL with redirect if required
if ($config->get('system.force_ssl')) { if ($config->get('system.force_ssl')) {
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') { if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
Admin::DEBUG && Admin::addDebugMessage('Admin SSL forced on, redirect');
$url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$this->grav->redirect($url); $this->grav->redirect($url);
} }
@@ -478,6 +479,7 @@ class AdminPlugin extends Plugin
// Handle tasks. // Handle tasks.
$this->admin->task = $task = $this->grav['task'] ?? $this->grav['action']; $this->admin->task = $task = $this->grav['task'] ?? $this->grav['action'];
if ($task) { if ($task) {
Admin::DEBUG && Admin::addDebugMessage("Admin task: {$task}");
$this->initializeController($task, $post); $this->initializeController($task, $post);
} elseif ($this->template === 'logs' && $this->route) { } elseif ($this->template === 'logs' && $this->route) {
// Display RAW error message. // Display RAW error message.
@@ -502,14 +504,18 @@ class AdminPlugin extends Plugin
$page = $event['page']; $page = $event['page'];
if ($page->slug()) { if ($page->slug()) {
Admin::DEBUG && Admin::addDebugMessage('Admin page: from event');
return $page; return $page;
} }
} }
// Look in the pages provided by the Admin plugin itself // Look in the pages provided by the Admin plugin itself
if (file_exists(__DIR__ . "/pages/admin/{$self->template}.md")) { if (file_exists(__DIR__ . "/pages/admin/{$self->template}.md")) {
Admin::DEBUG && Admin::addDebugMessage("Admin page: {$self->template}");
$page->init(new \SplFileInfo(__DIR__ . "/pages/admin/{$self->template}.md")); $page->init(new \SplFileInfo(__DIR__ . "/pages/admin/{$self->template}.md"));
$page->slug(basename($self->template)); $page->slug(basename($self->template));
return $page; return $page;
} }
@@ -525,6 +531,8 @@ class AdminPlugin extends Plugin
$path = $locator->findResource("plugins://{$plugin->name}/admin/pages/{$self->template}.md"); $path = $locator->findResource("plugins://{$plugin->name}/admin/pages/{$self->template}.md");
if ($path) { if ($path) {
Admin::DEBUG && Admin::addDebugMessage("Admin page: plugin {$plugin->name}/{$self->template}");
$page->init(new \SplFileInfo($path)); $page->init(new \SplFileInfo($path));
$page->slug(basename($self->template)); $page->slug(basename($self->template));
@@ -537,6 +545,7 @@ class AdminPlugin extends Plugin
if (empty($this->grav['page'])) { if (empty($this->grav['page'])) {
if ($this->grav['user']->authenticated) { if ($this->grav['user']->authenticated) {
Admin::DEBUG && Admin::addDebugMessage('Admin page: fire onPageNotFound event');
$event = new Event(['page' => null]); $event = new Event(['page' => null]);
$event->page = null; $event->page = null;
$event = $this->grav->fireEvent('onPageNotFound', $event); $event = $this->grav->fireEvent('onPageNotFound', $event);
@@ -544,6 +553,7 @@ class AdminPlugin extends Plugin
$page = $event->page; $page = $event->page;
if (!$page || !$page->routable()) { if (!$page || !$page->routable()) {
Admin::DEBUG && Admin::addDebugMessage('Admin page: 404 Not Found');
$error_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/error.md'); $error_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/error.md');
$page = new Page(); $page = new Page();
$page->init(new \SplFileInfo($error_file)); $page->init(new \SplFileInfo($error_file));
@@ -554,6 +564,7 @@ class AdminPlugin extends Plugin
unset($this->grav['page']); unset($this->grav['page']);
$this->grav['page'] = $page; $this->grav['page'] = $page;
} else { } else {
Admin::DEBUG && Admin::addDebugMessage('Admin page: login');
// Not Found and not logged in: Display login page. // Not Found and not logged in: Display login page.
$login_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/login.md'); $login_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/login.md');
$page = new Page(); $page = new Page();
@@ -903,6 +914,8 @@ class AdminPlugin extends Plugin
protected function initializeController($task, $post) protected function initializeController($task, $post)
{ {
Admin::DEBUG && Admin::addDebugMessage('Admin controller: execute');
$controller = new AdminController(); $controller = new AdminController();
$controller->initialize($this->grav, $this->template, $task, $this->route, $post); $controller->initialize($this->grav, $this->template, $task, $this->route, $post);
$controller->execute(); $controller->execute();

View File

@@ -5,6 +5,7 @@ namespace Grav\Plugin\Admin;
use DateTime; use DateTime;
use Grav\Common\Data; use Grav\Common\Data;
use Grav\Common\Data\Data as GravData; use Grav\Common\Data\Data as GravData;
use Grav\Common\Debugger;
use Grav\Common\File\CompiledYamlFile; use Grav\Common\File\CompiledYamlFile;
use Grav\Common\Flex\Users\UserObject; use Grav\Common\Flex\Users\UserObject;
use Grav\Common\GPM\GPM; use Grav\Common\GPM\GPM;
@@ -52,8 +53,9 @@ define('LOGIN_REDIRECT_COOKIE', 'grav-login-redirect');
class Admin class Admin
{ {
const MEDIA_PAGINATION_INTERVAL = 20; public const DEBUG = 1;
const TMP_COOKIE_NAME = 'tmp-admin-message'; public const MEDIA_PAGINATION_INTERVAL = 20;
public const TMP_COOKIE_NAME = 'tmp-admin-message';
/** @var Grav */ /** @var Grav */
public $grav; public $grav;
@@ -182,6 +184,17 @@ class Admin
} }
} }
/**
* @param string $message
* @param array $data
*/
public static function addDebugMessage(string $message, $data = [])
{
/** @var Debugger $debugger */
$debugger = Grav::instance()['debugger'];
$debugger->addMessage($message, 'debug', $data);
}
/** /**
* Return the languages available in the admin * Return the languages available in the admin
* *
@@ -400,6 +413,8 @@ class Admin
return; return;
} }
Admin::DEBUG && Admin::addDebugMessage("Admin redirect: {$redirectCode} {$redirect}");
$redirect = '/' . ltrim(preg_replace('`//+`', '/', $redirect), '/'); $redirect = '/' . ltrim(preg_replace('`//+`', '/', $redirect), '/');
$base = $this->base; $base = $this->base;
$root = Grav::instance()['uri']->rootUrl(); $root = Grav::instance()['uri']->rootUrl();
@@ -536,11 +551,15 @@ class Admin
// Check rate limit for both IP and user, but allow each IP a single try even if user is already rate limited. // Check rate limit for both IP and user, but allow each IP a single try even if user is already rate limited.
if ($rateLimiter->isRateLimited($ipKey, 'ip') || ($attempts && $rateLimiter->isRateLimited($userKey))) { if ($rateLimiter->isRateLimited($ipKey, 'ip') || ($attempts && $rateLimiter->isRateLimited($userKey))) {
Admin::DEBUG && Admin::addDebugMessage('Admin login: rate limit, redirecting', $credentials);
$this->setMessage(static::translate(['PLUGIN_LOGIN.TOO_MANY_LOGIN_ATTEMPTS', $rateLimiter->getInterval()]), 'error'); $this->setMessage(static::translate(['PLUGIN_LOGIN.TOO_MANY_LOGIN_ATTEMPTS', $rateLimiter->getInterval()]), 'error');
$this->grav->redirect('/'); $this->grav->redirect('/');
} }
Admin::DEBUG && Admin::addDebugMessage('Admin login', $credentials);
// Fire Login process. // Fire Login process.
$event = $login->login( $event = $login->login(
$credentials, $credentials,
@@ -549,6 +568,8 @@ class Admin
); );
$user = $event->getUser(); $user = $event->getUser();
Admin::DEBUG && Admin::addDebugMessage('Admin login: user', $user);
if ($user->authenticated) { if ($user->authenticated) {
$rateLimiter->resetRateLimit($ipKey, 'ip')->resetRateLimit($userKey); $rateLimiter->resetRateLimit($ipKey, 'ip')->resetRateLimit($userKey);
if ($user->authorized) { if ($user->authorized) {