diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e342da3..cc0c3c8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ 1. [](#new) * Added a `|adminNicetime` Twig filter to show nicetime in admin user's language + * Added a `prepend` and `append` field option for text input type + * Added a WIP `onAdminRegisterPermissions` event 1. [](#improved) * Fixed UI issue with Backup / Update buttons positioning * Tweaked placeholders color in login/new user panels [#542](https://github.com/getgrav/grav-plugin-admin/issues/542) diff --git a/admin.php b/admin.php index 0b14bdca..e88fc80e 100644 --- a/admin.php +++ b/admin.php @@ -293,6 +293,9 @@ class AdminPlugin extends Plugin // We need popularity no matter what require_once __DIR__ . '/classes/popularity.php'; $this->popularity = new Popularity(); + + // Fire even to register permissions from other plugins + $this->grav->fireEvent('onAdminRegisterPermissions', new Event(['admin' => $this->admin])); } protected function initializeController($task, $post) { @@ -601,7 +604,8 @@ class AdminPlugin extends Plugin 'onTwigTemplatePaths' => ['onTwigTemplatePaths', 1000], 'onTwigSiteVariables' => ['onTwigSiteVariables', 1000], 'onAssetsInitialized' => ['onAssetsInitialized', 1000], - 'onTask.GPM' => ['onTaskGPM', 0] + 'onTask.GPM' => ['onTaskGPM', 0], + 'onAdminRegisterPermissions' => ['onAdminRegisterPermissions', 0], ]); // Initialize admin class. @@ -748,4 +752,28 @@ class AdminPlugin extends Plugin $this->grav['twig']->plugins_hooked_dashboard_widgets_main[] = ['template' => 'dashboard-pages']; } + /** + * Initial stab at registering permissions (WIP) + * + * @param Event $e + */ + public function onAdminRegisterPermissions(Event $e) + { + $admin = $e['admin']; + $permissions = [ + 'admin.super'=> 'boolean', + 'admin.login' => 'boolean', + 'admin.cache' => 'boolean', + 'admin.configuration' => 'boolean', + 'admin.settings' => 'boolean', + 'admin.pages' => 'boolean', + 'admin.maintenance' => 'boolean', + 'admin.statistics' => 'boolean', + 'admin.plugins' => 'boolean', + 'admin.themes' => 'boolean', + 'admin.users' => 'boolean', + ]; + $admin->addPermissions($permissions); + } + } diff --git a/classes/admin.php b/classes/admin.php index 3a217d56..5602d019 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -80,6 +80,11 @@ class Admin */ protected $pages_count; + /** + * @var Array + */ + protected $permissions; + /** * Constructor. * @@ -97,6 +102,7 @@ class Admin $this->uri = $this->grav['uri']; $this->session = $this->grav['session']; $this->user = $this->grav['user']; + $this->permissions = []; $language = $this->grav['language']; if ($language->enabled()) { @@ -1085,4 +1091,34 @@ class Admin } return $js_format; } + + /** + * Sets the entire permissions array + * + * @param $permissions + */ + public function setPermissions($permissions) + { + $this->permissions = $permissions; + } + + /** + * Gets the entire permissions array + * + * @return Array + */ + public function getPermissions() + { + return $this->permissions; + } + + /** + * Adds a permission to the permissions array + * + * @param $permissions + */ + public function addPermissions($permissions) + { + $this->permissions = array_merge($this->permissions, $permissions); + } }