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