From 169d357ff86725c8a02601e5b3a33dc826705266 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 21 Sep 2018 23:09:23 +0200 Subject: [PATCH] Minor nav permission check improvements --- Controller/BackendController.php | 31 ++++++++++++++++++++------ Models/Navigation.php | 20 +++++++++++------ Theme/Backend/mid.tpl.php | 2 +- Views/NavigationView.php | 38 -------------------------------- 4 files changed, 38 insertions(+), 53 deletions(-) diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 5d35450..f6f7022 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -46,11 +46,16 @@ class BackendController extends Controller */ public function createNavigationMid(int $pageId, RequestAbstract $request, ResponseAbstract $response) : NavigationView { - $nav = Navigation::getInstance($request, $this->app->accountManager->get($request->getHeader()->getAccount()), $this->app->dbPool); + $nav = Navigation::getInstance($request, + $this->app->accountManager->get($request->getHeader()->getAccount()), + $this->app->dbPool, + $this->app->orgId, + $this->app->appName + ); + $navView = new NavigationView($this->app, $request, $response); $navView->setTemplate('/Modules/Navigation/Theme/Backend/mid'); $navView->setNav($nav->getNav()); - $navView->setLanguage($request->getHeader()->getL11n()->getLanguage()); $navView->setParent($pageId); return $navView; @@ -68,10 +73,16 @@ class BackendController extends Controller */ public function getView(RequestAbstract $request, ResponseAbstract $response) : NavigationView { - $navObj = \Modules\Navigation\Models\Navigation::getInstance($request, $this->app->accountManager->get($request->getHeader()->getAccount()), $this->app->dbPool); - $nav = new \Modules\Navigation\Views\NavigationView($this->app, $request, $response); + $navObj = \Modules\Navigation\Models\Navigation::getInstance( + $request, + $this->app->accountManager->get($request->getHeader()->getAccount()), + $this->app->dbPool, + $this->app->orgId, + $this->app->appName + ); + + $nav = new \Modules\Navigation\Views\NavigationView($this->app, $request, $response); $nav->setNav($navObj->getNav()); - $nav->setLanguage($request->getHeader()->getL11n()->getLanguage()); $unread = []; foreach ($this->receiving as $receiving) { @@ -107,6 +118,7 @@ class BackendController extends Controller /** @noinspection PhpIncludeInspection */ $lang = include $path; + $this->app->l11nManager->loadLanguage($response->getHeader()->getL11n()->getLanguage(), 'Navigation', $lang); } } @@ -122,12 +134,17 @@ class BackendController extends Controller */ public function createNavigationSplash(int $pageId, RequestAbstract $request, ResponseAbstract $response) : NavigationView { - $nav = Navigation::getInstance($request, $this->app->accountManager->get($request->getHeader()->getAccount()), $this->app->dbPool); + $nav = Navigation::getInstance($request, + $this->app->accountManager->get($request->getHeader()->getAccount()), + $this->app->dbPool, + $this->app->orgId, + $this->app->appName + ); + $navView = new NavigationView($this->app, $request, $response); $navView->setTemplate('/Modules/Navigation/Theme/Backend/splash'); $navView->setNav($nav->getNav()); - $navView->setLanguage($request->getHeader()->getL11n()->getLanguage()); $navView->setParent($pageId); return $navView; diff --git a/Models/Navigation.php b/Models/Navigation.php index 1040bd2..31f694d 100644 --- a/Models/Navigation.php +++ b/Models/Navigation.php @@ -63,13 +63,15 @@ class Navigation * @param RequestAbstract $request Request hashes * @param Account $account Account * @param DatabasePool $dbPool Database pool + * @param int $unit Unit + * @param string $appName App name * * @since 1.0.0 */ - private function __construct(RequestAbstract $request, Account $account, DatabasePool $dbPool) + private function __construct(RequestAbstract $request, Account $account, DatabasePool $dbPool, int $unit, string $appName) { $this->dbPool = $dbPool; - $this->load($request->getHash(), $account); + $this->load($request->getHash(), $account, $unit, $appName); } /** @@ -77,12 +79,14 @@ class Navigation * * @param string[] $hashes Request hashes * @param Account $account Account + * @param int $unit Unit + * @param string $app App name * * @return void * * @since 1.0.0 */ - private function load(array $hashes, Account $account) + private function load(array $hashes, Account $account, int $unit, string $app) { if (empty($this->nav)) { $this->nav = []; @@ -102,8 +106,8 @@ class Navigation foreach ($tempNav as $id => $link) { $isReadable = $account->hasPermission( PermissionType::READ, - null, - null, + $unit, + $app, (string) $link[0]['nav_from'], (int) $link[0]['nav_permission_type'], (int) $link[0]['nav_permission_element'] @@ -154,6 +158,8 @@ class Navigation * @param RequestAbstract $hashes Request hashes * @param Account $account Account * @param DatabasePool $dbPool Database pool + * @param int $unit Unit + * @param string $appName App name * * @return \Modules\Navigation\Models\Navigation * @@ -161,14 +167,14 @@ class Navigation * * @since 1.0.0 */ - public static function getInstance(RequestAbstract $hashes = null, Account $account, DatabasePool $dbPool) + public static function getInstance(RequestAbstract $hashes = null, Account $account, DatabasePool $dbPool, int $unit, string $appName) { if (!isset(self::$instance)) { if (!isset($hashes) || !isset($dbPool)) { throw new \Exception('Invalid parameters'); } - self::$instance = new self($hashes, $account, $dbPool); + self::$instance = new self($hashes, $account, $dbPool, $unit, $appName); } return self::$instance; diff --git a/Theme/Backend/mid.tpl.php b/Theme/Backend/mid.tpl.php index 46c5423..a0089e8 100644 --- a/Theme/Backend/mid.tpl.php +++ b/Theme/Backend/mid.tpl.php @@ -14,7 +14,7 @@ * @var \Modules\Navigation\Views\NavigationView $this */ -if (isset($this->nav[\Modules\Navigation\Models\NavigationType::CONTENT]) +if (isset($this->nav[\Modules\Navigation\Models\NavigationType::CONTENT]) && \phpOMS\Utils\ArrayUtils::inArrayRecursive($this->parent, $this->nav[\Modules\Navigation\Models\NavigationType::CONTENT], 'nav_parent') ) { echo '