From 06143f98b14ae9282788b2d3c86b19ed143dbad8 Mon Sep 17 00:00:00 2001 From: Xenomporio <> Date: Mon, 20 Jun 2022 16:27:51 +0200 Subject: [PATCH] Implemented: user rights cannot be removed as soon as user template grants this right. --- www/pages/benutzer.php | 38 ++++++++++++++++++++++++++++++-------- www/pages/uservorlage.php | 4 ++-- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/www/pages/benutzer.php b/www/pages/benutzer.php index 949e184e..5137542a 100644 --- a/www/pages/benutzer.php +++ b/www/pages/benutzer.php @@ -524,7 +524,7 @@ class Benutzer if($data[0]['type']=="admin"){ $this->app->Tpl->Set('HINWEISADMIN',"
Dieser Benutzer ist vom Typ Administrator. Administratoren haben immer Vollzugriff - daher können diesem keine Rechte genommen werden.
"); } else { - $this->app->Tpl->Add("HINWEISADMIN","
Hinweis: Blau = erlaubt, Grau = gesperrt"); + $this->app->Tpl->Add("HINWEISADMIN","
Hinweis: Blau = erlaubt, Grau = gesperrt, Sobald eine Vorlage eingetragen ist können Rechte der Vorlage dem Benutzer nicht mehr entzogen werden."); } $this->SetInput($data[0]); $this->UserRights(); @@ -944,19 +944,41 @@ class Benutzer { $this->app->DB->Update("UPDATE userrights SET permission='$value' WHERE id='$id' LIMIT 1"); } - else - $this->app->DB->Delete("DELETE FROM userrights WHERE user='$user' AND module='$module' AND action='$action'"); - } - //$this->app->DB->Update("UPDATE userrights SET permission='$value' WHERE id='$id' LIMIT 1"); - else - $this->app->DB->Insert("INSERT INTO userrights (user, module, action, permission) VALUES ('$user', '$module', '$action', '$value')"); + else + { + + $sql = " + SELECT + permission + FROM + `uservorlagerights` + INNER JOIN `uservorlage` INNER JOIN `user` ON `uservorlagerights`.`vorlage` = `uservorlage`.`id` AND `user`.`vorlage` = `uservorlage`.`bezeichnung` + WHERE + `user`.`id` = '$user' AND `uservorlagerights`.`module` = '$module' AND `uservorlagerights`.`action` = '$action' LIMIT 1"; + + $uservorlageright = $this->app->DB->Select($sql); + + $fromtemplate = false; + if (!empty($uservorlageright)) { + if ($uservorlageright[0] == '1') { + $fromtemplate = true; + } + } + + if (!$fromtemplate) { + $this->app->DB->Delete("DELETE FROM userrights WHERE user='$user' AND module='$module' AND action='$action'"); + } + } + } + else { + $this->app->DB->Insert("INSERT INTO userrights (user, module, action, permission) VALUES ('$user', '$module', '$action', '$value')"); + } $this->permissionLog($this->app->User->GetID(),$user,$module,$action,$value); } echo $this->app->DB->Select("SELECT permission FROM userrights WHERE user='$user' AND module='$module' AND action='$action' LIMIT 1"); - exit; } diff --git a/www/pages/uservorlage.php b/www/pages/uservorlage.php index d2e7304c..99c983b4 100644 --- a/www/pages/uservorlage.php +++ b/www/pages/uservorlage.php @@ -219,8 +219,6 @@ class Uservorlage ); $this->app->Tpl->Set('MESSAGE', "
Die Einstellungen wurden erfolgreich übernommen.
"); - - $this->app->erp->AbgleichBenutzerVorlagen($id); } } // END Input Get @@ -338,6 +336,8 @@ class Uservorlage } echo $this->app->DB->Select("SELECT permission FROM uservorlagerights WHERE vorlage='$vorlage' AND module='$module' AND action='$action' LIMIT 1"); + $this->app->erp->AbgleichBenutzerVorlagen(null, $id, $module, $action); // Update permissions for all users + exit; }