]> git.andy128k.dev Git - ipf.git/commitdiff
isolate component related methods
authorAndrey Kutejko <andy128k@gmail.com>
Sat, 3 Jan 2015 23:37:46 +0000 (01:37 +0200)
committerAndrey Kutejko <andy128k@gmail.com>
Sat, 3 Jan 2015 23:37:46 +0000 (01:37 +0200)
ipf/admin/app.php
ipf/admin/component.php
ipf/admin/controllers/components.php

index 2b2e9c5bc6bed1fce90e8ed2e4edbc4bc01d91d7..69a8b87eb30fdca465203ffe90f56b1931bf4732 100644 (file)
@@ -106,37 +106,6 @@ class IPF_Admin_App extends IPF_Application
             throw new IPF_Admin_LoginRequired;
     }
 
-    public static function isAccessible($request, $component, $requiredPermissions)
-    {
-        if (count(array_diff($requiredPermissions, $component->getPerms($request))))
-            return false;
-
-        if ($request->user->is_superuser || !\PFF\Container::auth()->arePermissionsEnabled())
-            return true;
-
-        $authPermissions = F::bind('array_map',
-                F::bind('sprintf', '%s|%s|%s', $component->app->slug(), $component->slug(), P::p()),
-                P::p())
-            ->call($requiredPermissions);
-
-        return $request->user->can($authPermissions);
-    }
-
-    public static function getComponent($request, $requiredPermissions)
-    {
-        self::ensureUserIsStaff($request);
-
-        $component = self::getComponentBySlugs($request->params[1], $request->params[2]);
-        if (!$component)
-            throw new IPF_HTTP_Error404;
-
-        if (!IPF_Admin_App::isAccessible($request, $component, $requiredPermissions))
-            throw new IPF_Admin_AccessDenied;
-
-        $component->request = $request;
-        return $component;
-    }
-
     public static function getApplicationBySlug($slug)
     {
         foreach (IPF_Project::getInstance()->appList() as $app)
index 48b47a58e55776ec41e2ec9f79046a463703d73f..69fcd1971b712b3809c548c220c3899d998caf9e 100644 (file)
@@ -39,7 +39,19 @@ abstract class IPF_Admin_Component
             $request = $this->request;
         if (!$request)
             throw new IPF_Exception('No request.');
-        return IPF_Admin_App::isAccessible($request, $this, $what);
+
+        if (count(array_diff($what, $this->getPerms($request))))
+            return false;
+
+        if ($request->user->is_superuser || !\PFF\Container::auth()->arePermissionsEnabled())
+            return true;
+
+        $authPermissions = F::bind('array_map',
+                F::bind('sprintf', '%s|%s|%s', $this->app->slug(), $this->slug(), P::p()),
+                P::p())
+            ->call($what);
+
+        return $request->user->can($authPermissions);
     }
 
     protected function context($request)
index 8bb39dea7ebcc0bcee0f4e5196c4f1a606be8255..4d80bfb46d5b2edca05c5a5ccede58ae2697ddb0 100644 (file)
@@ -63,7 +63,17 @@ class IPF_Admin_Controller extends IPF_Admin_Base_Controller
 
     protected function getComponent($requiredPermissions)
     {
-        return \PFF\Container::admin()->getComponent($this->request, $requiredPermissions);
+        IPF_Admin_App::ensureUserIsStaff($this->request);
+
+        $component = IPF_Admin_App::getComponentBySlugs($this->request->params[1], $this->request->params[2]);
+        if (!$component)
+            throw new IPF_HTTP_Error404;
+
+        if (!$component->isAccessible($requiredPermissions, $this->request))
+            throw new IPF_Admin_AccessDenied;
+
+        $component->request = $this->request;
+        return $component;
     }
 }