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) | ||||
|     * 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