mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-02 11:26:04 +01:00
Added some debugging messages (turned off by default)
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
1. [](#new)
|
||||
* Pass phpstan level 1 tests
|
||||
* Updated semver library to v1.5
|
||||
* [](#improved)
|
||||
* Added some debugging messages (turned off by default)
|
||||
|
||||
# v1.10.0-rc.5
|
||||
## 02/03/2020
|
||||
|
||||
15
admin.php
15
admin.php
@@ -300,9 +300,9 @@ class AdminPlugin extends Plugin
|
||||
$form = $event['form'];
|
||||
$action = $event['action'];
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin Form: ' . $action);
|
||||
switch ($action) {
|
||||
case 'register_admin_user':
|
||||
|
||||
if (Admin::doAnyUsersExist()) {
|
||||
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
|
||||
if ($config->get('system.force_ssl')) {
|
||||
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin SSL forced on, redirect');
|
||||
$url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
$this->grav->redirect($url);
|
||||
}
|
||||
@@ -478,6 +479,7 @@ class AdminPlugin extends Plugin
|
||||
// Handle tasks.
|
||||
$this->admin->task = $task = $this->grav['task'] ?? $this->grav['action'];
|
||||
if ($task) {
|
||||
Admin::DEBUG && Admin::addDebugMessage("Admin task: {$task}");
|
||||
$this->initializeController($task, $post);
|
||||
} elseif ($this->template === 'logs' && $this->route) {
|
||||
// Display RAW error message.
|
||||
@@ -502,14 +504,18 @@ class AdminPlugin extends Plugin
|
||||
$page = $event['page'];
|
||||
|
||||
if ($page->slug()) {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin page: from event');
|
||||
return $page;
|
||||
}
|
||||
}
|
||||
|
||||
// Look in the pages provided by the Admin plugin itself
|
||||
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->slug(basename($self->template));
|
||||
|
||||
return $page;
|
||||
}
|
||||
|
||||
@@ -525,6 +531,8 @@ class AdminPlugin extends Plugin
|
||||
$path = $locator->findResource("plugins://{$plugin->name}/admin/pages/{$self->template}.md");
|
||||
|
||||
if ($path) {
|
||||
Admin::DEBUG && Admin::addDebugMessage("Admin page: plugin {$plugin->name}/{$self->template}");
|
||||
|
||||
$page->init(new \SplFileInfo($path));
|
||||
$page->slug(basename($self->template));
|
||||
|
||||
@@ -537,6 +545,7 @@ class AdminPlugin extends Plugin
|
||||
|
||||
if (empty($this->grav['page'])) {
|
||||
if ($this->grav['user']->authenticated) {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin page: fire onPageNotFound event');
|
||||
$event = new Event(['page' => null]);
|
||||
$event->page = null;
|
||||
$event = $this->grav->fireEvent('onPageNotFound', $event);
|
||||
@@ -544,6 +553,7 @@ class AdminPlugin extends Plugin
|
||||
$page = $event->page;
|
||||
|
||||
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');
|
||||
$page = new Page();
|
||||
$page->init(new \SplFileInfo($error_file));
|
||||
@@ -554,6 +564,7 @@ class AdminPlugin extends Plugin
|
||||
unset($this->grav['page']);
|
||||
$this->grav['page'] = $page;
|
||||
} else {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin page: login');
|
||||
// Not Found and not logged in: Display login page.
|
||||
$login_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/login.md');
|
||||
$page = new Page();
|
||||
@@ -903,6 +914,8 @@ class AdminPlugin extends Plugin
|
||||
|
||||
protected function initializeController($task, $post)
|
||||
{
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin controller: execute');
|
||||
|
||||
$controller = new AdminController();
|
||||
$controller->initialize($this->grav, $this->template, $task, $this->route, $post);
|
||||
$controller->execute();
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace Grav\Plugin\Admin;
|
||||
use DateTime;
|
||||
use Grav\Common\Data;
|
||||
use Grav\Common\Data\Data as GravData;
|
||||
use Grav\Common\Debugger;
|
||||
use Grav\Common\File\CompiledYamlFile;
|
||||
use Grav\Common\Flex\Users\UserObject;
|
||||
use Grav\Common\GPM\GPM;
|
||||
@@ -52,8 +53,9 @@ define('LOGIN_REDIRECT_COOKIE', 'grav-login-redirect');
|
||||
|
||||
class Admin
|
||||
{
|
||||
const MEDIA_PAGINATION_INTERVAL = 20;
|
||||
const TMP_COOKIE_NAME = 'tmp-admin-message';
|
||||
public const DEBUG = 1;
|
||||
public const MEDIA_PAGINATION_INTERVAL = 20;
|
||||
public const TMP_COOKIE_NAME = 'tmp-admin-message';
|
||||
|
||||
/** @var 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
|
||||
*
|
||||
@@ -400,6 +413,8 @@ class Admin
|
||||
return;
|
||||
}
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage("Admin redirect: {$redirectCode} {$redirect}");
|
||||
|
||||
$redirect = '/' . ltrim(preg_replace('`//+`', '/', $redirect), '/');
|
||||
$base = $this->base;
|
||||
$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.
|
||||
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->grav->redirect('/');
|
||||
}
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login', $credentials);
|
||||
|
||||
// Fire Login process.
|
||||
$event = $login->login(
|
||||
$credentials,
|
||||
@@ -549,6 +568,8 @@ class Admin
|
||||
);
|
||||
$user = $event->getUser();
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login: user', $user);
|
||||
|
||||
if ($user->authenticated) {
|
||||
$rateLimiter->resetRateLimit($ipKey, 'ip')->resetRateLimit($userKey);
|
||||
if ($user->authorized) {
|
||||
|
||||
Reference in New Issue
Block a user