From e18b0b0c764652d6f77465082eb474330f43915b Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 31 Oct 2019 15:15:03 +0100 Subject: [statistics/baseconfig] Allow per-machine configvar overrides --- modules-available/baseconfig/inc/validator.inc.php | 2 +- modules-available/baseconfig/page.inc.php | 24 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'modules-available/baseconfig') diff --git a/modules-available/baseconfig/inc/validator.inc.php b/modules-available/baseconfig/inc/validator.inc.php index 2dfeed7c..60cda5a4 100644 --- a/modules-available/baseconfig/inc/validator.inc.php +++ b/modules-available/baseconfig/inc/validator.inc.php @@ -47,7 +47,7 @@ class Validator * Otherwise it it assumed that the value is a plain text * password that is supposed to be hashed. */ - private static function linuxPassword(&$displayValue) + private static function linuxPassword($displayValue) { if (empty($displayValue)) return ''; diff --git a/modules-available/baseconfig/page.inc.php b/modules-available/baseconfig/page.inc.php index 837a3b67..0c11d5e1 100644 --- a/modules-available/baseconfig/page.inc.php +++ b/modules-available/baseconfig/page.inc.php @@ -23,11 +23,7 @@ class Page_BaseConfig extends Page $newValues = Request::post('setting'); if (is_array($newValues)) { - if ($this->targetModule === 'locations') { - User::assertPermission('edit', $this->qry_extra['field_value']); - } else { - User::assertPermission('edit', 0); - } + User::assertPermission('edit', $this->getPermissionLocationId()); // Build variables for specific sub-settings if ($this->targetModule === false || empty($this->qry_extra['field'])) { // Global, or Module specific, but module doesn't have an extra field @@ -118,13 +114,9 @@ class Page_BaseConfig extends Page Util::redirect('?do=BaseConfig'); } } - if ($this->targetModule === 'locations') { - User::assertPermission('view', $this->qry_extra['field_value']); - $editForbidden = !User::hasPermission('edit', $this->qry_extra['field_value']); - } else { - User::assertPermission('view', 0); - $editForbidden = !User::hasPermission('edit', 0); - } + $lid = $this->getPermissionLocationId(); + User::assertPermission('view', $lid); + $editForbidden = !User::hasPermission('edit', $lid); // Get stuff that's set in DB already if ($this->targetModule !== false && isset($this->qry_extra['field'])) { $fields = ''; @@ -280,6 +272,14 @@ class Page_BaseConfig extends Page $this->targetModule = $module; $this->qry_extra = $hook; } + + private function getPermissionLocationId() + { + if (!isset($this->qry_extra['locationResolver']) || !isset($this->qry_extra['field_value'])) + return 0; + $func = explode('::', $this->qry_extra['locationResolver']); + return (int)call_user_func($func, $this->qry_extra['field_value']); + } /** * Create html snippet for setting, based on given validator -- cgit v1.2.3-55-g7522