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