| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | 
							- <?php
 
- namespace Grav\Plugin;
 
- use Grav\Common\Plugin;
 
- use RocketTheme\Toolbox\Event\Event;
 
- use \Grav\Common\Utils;
 
- use \Grav\Common\User\User;
 
- use Grav\Common\File\CompiledYamlFile;
 
- use AdminAddonUserManager\Users\Manager as UsersManager;
 
- use AdminAddonUserManager\Groups\Manager as GroupsManager;
 
- use AdminAddonUserManager\Users\ExpertManager as UsersExpertManager;
 
- class AdminAddonUserManagerPlugin extends Plugin {
 
-   /**
 
-    * Returns the plugin's configuration key
 
-    *
 
-    * @param String $key
 
-    * @return String
 
-    */
 
-   public function getPluginConfigKey($key = null) {
 
-     $pluginKey = 'plugins.' . $this->name;
 
-     return ($key !== null) ? $pluginKey . '.' . $key : $pluginKey;
 
-   }
 
-   public function getPluginConfigValue($key = null, $default = null) {
 
-     return $this->config->get($this->getPluginConfigKey($key), $default);
 
-   }
 
-   public function getConfigValue($key, $default = null) {
 
-     return $this->config->get($key, $default);
 
-   }
 
-   public function getPreviousUrl() {
 
-     return $this->grav['session']->{$this->name . '.previous_url'};
 
-   }
 
-   public function getModalsConfiguration() {
 
-     return CompiledYamlFile::instance(__DIR__ . DS . 'modals.yaml')->content();
 
-   }
 
-   public static function getSubscribedEvents() {
 
-     return [
 
-       'onPluginsInitialized' => ['onPluginsInitialized', 0],
 
-       'onAdminRegisterPermissions' => ['onAdminRegisterPermissions', 1000]
 
-     ];
 
-   }
 
-   public function onPluginsInitialized() {
 
-     if (!$this->isAdmin() || !$this->grav['user']->authenticated) {
 
-       return;
 
-     }
 
-     $this->grav['locator']->addPath('blueprints', '', __DIR__ . DS . 'blueprints');
 
-     include __DIR__ . DS . 'vendor' . DS . 'autoload.php';
 
-     $this->managers[] = new UsersManager($this->grav, $this);
 
-     $this->managers[] = new GroupsManager($this->grav, $this);
 
-     $this->managers[] = new UsersExpertManager($this->grav, $this);
 
-     $this->enable([
 
-       'onAdminTwigTemplatePaths' => ['onAdminTwigTemplatePaths', -10],
 
-       'onTwigSiteVariables' => ['onTwigSiteVariables', 0],
 
-       'onAdminMenu' => ['onAdminMenu', 0],
 
-       'onAssetsInitialized' => ['onAssetsInitialized', 0],
 
-       'onAdminTaskExecute' => ['onAdminTaskExecute', 0],
 
-     ]);
 
-     $this->registerPermissions();
 
-   }
 
-   public function onAssetsInitialized() {
 
-     $assets = $this->grav['assets'];
 
-     foreach ($this->managers as $manager) {
 
-       $manager->initializeAssets($assets);
 
-     }
 
-   }
 
-   public function onAdminMenu() {
 
-     $twig = $this->grav['twig'];
 
-     $twig->plugins_hooked_nav = (isset($twig->plugins_hooked_nav)) ? $twig->plugins_hooked_nav : [];
 
-     foreach ($this->managers as $manager) {
 
-       $nav = $manager->getNav();
 
-       if ($nav) {
 
-         $twig->plugins_hooked_nav[$nav['label']] = $nav;
 
-       }
 
-     }
 
-   }
 
-   public function onAdminTwigTemplatePaths($e) {
 
-     $paths = $e['paths'];
 
-     $paths[] = __DIR__ . DS . 'templates';
 
-     $e['paths'] = $paths;
 
-   }
 
-   public function onTwigSiteVariables() {
 
-     $page = $this->grav['page'];
 
-     $twig = $this->grav['twig'];
 
-     $session = $this->grav['session'];
 
-     $uri = $this->grav['uri'];
 
-     foreach ($this->managers as $manager) {
 
-       if ($page->slug() === $manager->getLocation() && $this->grav['admin']->authorize(['admin.super', $manager->getRequiredPermission()])) {
 
-         $session->{$this->name . '.previous_url'} = $uri->route() . $uri->params();
 
-         $page = $this->grav['admin']->page(true);
 
-         $page->id('aaum-' . implode('/', $uri->paths()));
 
-         $twig->twig_vars['context'] = $page;
 
-         $vars = $manager->handleRequest();
 
-         $twig->twig_vars = array_merge($twig->twig_vars, $vars);
 
-         return true;
 
-       }
 
-     }
 
-   }
 
-   public function onAdminTaskExecute($e) {
 
-     foreach ($this->managers as $manager) {
 
-       if ($this->grav['admin']->authorize(['admin.super', $manager->getRequiredPermission()])) {
 
-         $result = $manager->handleTask($e);
 
-         if ($result) {
 
-           return true;
 
-         }
 
-       }
 
-     }
 
-     return false;
 
-   }
 
-   public function registerPermissions() {
 
-     foreach ($this->managers as $manager) {
 
-       $this->grav['admin']->addPermissions([$manager->getRequiredPermission() => 'boolean']);
 
-     }
 
-     // Custom permissions
 
-     $customPermissions = $this->getPluginConfigValue('custom_permissions', []);
 
-     foreach ($customPermissions as $permission) {
 
-       $this->grav['admin']->addPermissions([$permission => 'boolean']);
 
-     }
 
-   }
 
-   public function onAdminRegisterPermissions() {
 
-     if (!$this->isAdmin() || !$this->grav['user']->authenticated) {
 
-       return;
 
-     }
 
-     $this->grav['admin']->addPermissions(['site.login' => 'boolean']);
 
-   }
 
- }
 
 
  |