[icinga-checkins] icinga.org: icingaweb2/master: Make hooks respect module permissions

git at icinga.org git at icinga.org
Mon Nov 14 09:46:32 CET 2016


Module: icingaweb2
Branch: master
Commit: 4d2e6d2d8709da9168af824c36458dd5857b08a8
URL:    https://git.icinga.org/?p=icingaweb2.git;a=commit;h=4d2e6d2d8709da9168af824c36458dd5857b08a8

Author: Alexander A. Klimov <alexander.klimov at icinga.com>
Date:   Thu Oct 20 18:28:19 2016 +0200

Make hooks respect module permissions

refs #12396

---

 library/Icinga/Application/Modules/Module.php |   24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/library/Icinga/Application/Modules/Module.php b/library/Icinga/Application/Modules/Module.php
index de40266..5551272 100644
--- a/library/Icinga/Application/Modules/Module.php
+++ b/library/Icinga/Application/Modules/Module.php
@@ -4,6 +4,7 @@
 namespace Icinga\Application\Modules;
 
 use Exception;
+use Icinga\Authentication\Auth;
 use Zend_Controller_Router_Route;
 use Zend_Controller_Router_Route_Abstract;
 use Zend_Controller_Router_Route_Regex;
@@ -1282,19 +1283,22 @@ class Module
      */
     protected function provideHook($name, $implementation = null, $key = null)
     {
-        if ($implementation === null) {
-            $implementation = $name;
-        }
+        if (Auth::getInstance()->hasPermission('module/' . $this->name)) {
+            if ($implementation === null) {
+                $implementation = $name;
+            }
 
-        if (strpos($implementation, '\\') === false) {
-            $class = $this->getNamespace()
-                   . '\\ProvidedHook\\'
-                   . $this->slashesToNamespace($implementation);
-        } else {
-            $class = $implementation;
+            if (strpos($implementation, '\\') === false) {
+                $class = $this->getNamespace()
+                    . '\\ProvidedHook\\'
+                    . $this->slashesToNamespace($implementation);
+            } else {
+                $class = $implementation;
+            }
+
+            Hook::register($name, $class, $class);
         }
 
-        Hook::register($name, $class, $class);
         return $this;
     }
 



More information about the icinga-checkins mailing list