added onAdminRegisterPermissions event

This commit is contained in:
Andy Miller
2016-05-04 14:26:27 -06:00
parent e033d9f147
commit b5a651eca9
3 changed files with 67 additions and 1 deletions

View File

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

View File

@@ -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);
}
}

View File

@@ -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);
}
}