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) 1. [](#new)
* Added a `|adminNicetime` Twig filter to show nicetime in admin user's language * 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) 1. [](#improved)
* Fixed UI issue with Backup / Update buttons positioning * 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) * 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 // We need popularity no matter what
require_once __DIR__ . '/classes/popularity.php'; require_once __DIR__ . '/classes/popularity.php';
$this->popularity = new Popularity(); $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) { protected function initializeController($task, $post) {
@@ -601,7 +604,8 @@ class AdminPlugin extends Plugin
'onTwigTemplatePaths' => ['onTwigTemplatePaths', 1000], 'onTwigTemplatePaths' => ['onTwigTemplatePaths', 1000],
'onTwigSiteVariables' => ['onTwigSiteVariables', 1000], 'onTwigSiteVariables' => ['onTwigSiteVariables', 1000],
'onAssetsInitialized' => ['onAssetsInitialized', 1000], 'onAssetsInitialized' => ['onAssetsInitialized', 1000],
'onTask.GPM' => ['onTaskGPM', 0] 'onTask.GPM' => ['onTaskGPM', 0],
'onAdminRegisterPermissions' => ['onAdminRegisterPermissions', 0],
]); ]);
// Initialize admin class. // Initialize admin class.
@@ -748,4 +752,28 @@ class AdminPlugin extends Plugin
$this->grav['twig']->plugins_hooked_dashboard_widgets_main[] = ['template' => 'dashboard-pages']; $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; protected $pages_count;
/**
* @var Array
*/
protected $permissions;
/** /**
* Constructor. * Constructor.
* *
@@ -97,6 +102,7 @@ class Admin
$this->uri = $this->grav['uri']; $this->uri = $this->grav['uri'];
$this->session = $this->grav['session']; $this->session = $this->grav['session'];
$this->user = $this->grav['user']; $this->user = $this->grav['user'];
$this->permissions = [];
$language = $this->grav['language']; $language = $this->grav['language'];
if ($language->enabled()) { if ($language->enabled()) {
@@ -1085,4 +1091,34 @@ class Admin
} }
return $js_format; 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);
}
} }