mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-10-31 18:35:57 +01:00
Added some debugging messages (turned off by default)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
15
admin.php
15
admin.php
@@ -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();
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user