mirror of
				https://github.com/getgrav/grav-plugin-admin.git
				synced 2025-10-31 10:25:50 +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