From cd82baf075460e83d90641e6b1c586344b7a80cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 6 Apr 2018 09:45:49 +0200 Subject: [PATCH] =?UTF-8?q?Problem=20behoben=20wodurch=20getStgKz=20nicht?= =?UTF-8?q?=20immer=20korrekte=20Daten=20zur=C3=BCcklieferte=20wenn=20Bere?= =?UTF-8?q?chtigungen=20=C3=BCber=20Rollen=20und=20Funktionen=20zugeteilt?= =?UTF-8?q?=20sind=20Berechtigungen=20f=C3=BCr=20diverse=20Seiten=20angepa?= =?UTF-8?q?sst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/benutzerberechtigung.class.php | 18 +++++++------- include/tw/vilesci_menu_main.inc.php | 4 ++-- vilesci/personen/funktion.php | 17 ++++++++++---- vilesci/personen/urlaubsverwaltung.php | 2 +- vilesci/personen/zeitwunsch.php | 2 +- vilesci/stammdaten/statistik_details.php | 2 +- vilesci/stammdaten/statistik_uebersicht.php | 26 ++++++++++----------- vilesci/statistik/filter_details.php | 12 +++++----- vilesci/statistik/filter_overview.php | 2 +- 9 files changed, 48 insertions(+), 37 deletions(-) diff --git a/include/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php index ed0b60977..a615729f4 100644 --- a/include/benutzerberechtigung.class.php +++ b/include/benutzerberechtigung.class.php @@ -650,7 +650,7 @@ class benutzerberechtigung extends basis_db foreach ($this->berechtigungen as $b) { - if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz) + if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)) && (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null))) { if($b->negativ) @@ -671,7 +671,9 @@ class benutzerberechtigung extends basis_db { $childoes = $oe->getChilds($b->oe_kurzbz); foreach($childoes as $row) + { $in .= "'".$this->db_escape($row)."',"; + } } else { @@ -728,7 +730,7 @@ class benutzerberechtigung extends basis_db foreach ($this->berechtigungen as $b) { - if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz) + if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)) && (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null))) { if($b->negativ) @@ -801,7 +803,7 @@ class benutzerberechtigung extends basis_db $oe = new organisationseinheit(); foreach ($this->berechtigungen as $b) { - if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz) + if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)) && (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null))) { if($b->negativ) @@ -828,9 +830,9 @@ class benutzerberechtigung extends basis_db { if(!is_null($b->oe_kurzbz)) { - $childoes = $oe->getChilds($b->oe_kurzbz); - foreach($childoes as $row) - $oe_kurzbz[] = $row; + $childoes = $oe->getChilds($b->oe_kurzbz); + foreach($childoes as $row) + $oe_kurzbz[] = $row; } else { @@ -874,7 +876,7 @@ class benutzerberechtigung extends basis_db if(!mb_strstr($b->berechtigung_kurzbz,'wawi/')) continue; - if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz) + if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || (mb_strpos($berechtigung_kurzbz,':')!==false && mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)) && (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null))) { if($b->negativ) @@ -1065,7 +1067,7 @@ class benutzerberechtigung extends basis_db * * @param string $berechtigung_kurzbz Kurzbezeichnung der Berechtigung, deren Rollen geladen werden sollen * @param boolean $inklusiveRollen Default TRUE. Wenn true, wird ein UNION SELECT mit der tbl_rolleberechtigung ausgefuehrt - * @param string $oe_kurzbz Organisationseinheit + * @param string $oe_kurzbz Organisationseinheit * @return boolean true wenn ok, false im Fehlerfall */ public function getBenutzerFromBerechtigung($berechtigung_kurzbz, $inklusiveRollen = true, $oe_kurzbz = null) diff --git a/include/tw/vilesci_menu_main.inc.php b/include/tw/vilesci_menu_main.inc.php index 76938c547..5330df225 100644 --- a/include/tw/vilesci_menu_main.inc.php +++ b/include/tw/vilesci_menu_main.inc.php @@ -109,7 +109,7 @@ $menu=array 'Benutzer'=>array ( 'name'=>'Benutzer','permissions'=>array('admin','lv-plan','support'), - 'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main'), + 'Funktionen'=>array('name'=>'Funktionen', 'link'=>'personen/funktion.php', 'target'=>'main', 'permissions'=>array('mitarbeiter')), 'Berechtigungen'=>array('name'=>'Berechtigungen', 'link'=>'stammdaten/benutzerberechtigung_frameset.html', 'target'=>'main','permissions'=>array('basis/berechtigung')), 'Rollen'=>array('name'=>'Rollen', 'link'=>'stammdaten/berechtigungrolle.php', 'target'=>'main','permissions'=>array('basis/berechtigung')), 'Variablen'=>array('name'=>'Variablen', 'link'=>'stammdaten/variablen_frameset.html', 'target'=>'main', 'target'=>'main','permissions'=>array('basis/variable')), @@ -188,7 +188,7 @@ $menu=array 'Firmenwartung'=>array('name'=>'Firmenwartung', 'link'=>'stammdaten/firma_zusammen_uebersicht.php', 'target'=>'main','permissions'=>array('basis/firma')), 'checkStudenten'=>array('name'=>'CheckStudenten', 'link'=>'../system/checkStudenten.php', 'target'=>'main', 'permissions'=>array('student/stammdaten')), 'StudienplanZuteilung'=>array('name'=>'Studienplan Zuteilung', 'link'=>'lehre/studienplan_zuteilung.php', 'target'=>'main','permissions'=>array('assistenz')), - 'lv_merge'=>array('name'=>'LVs zusammenlegen', 'link'=>'lehre/lv_merge.php', 'target'=>'main','permissions'=>array('admin','lv-plan')), + 'lv_merge'=>array('name'=>'LVs zusammenlegen', 'link'=>'lehre/lv_merge.php', 'target'=>'main','permissions'=>array('lehre/lehrveranstaltung')), 'akteupdate'=>array('name'=>'Akten überschreiben', 'link'=>'personen/akteupdate.php', 'target'=>'main','permissions'=>array('admin')), ), 'Auswertung'=> array diff --git a/vilesci/personen/funktion.php b/vilesci/personen/funktion.php index f2e86a52e..a6628c5fa 100644 --- a/vilesci/personen/funktion.php +++ b/vilesci/personen/funktion.php @@ -20,22 +20,31 @@ * Rudolf Hangl < rudolf.hangl@technikum-wien.at > * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > */ - - /** * Changes: 23.10.2004: Anpassung an neues DB-Schema (WM) */ require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/basis_db.class.php'); + +$uid = get_uid(); + if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +if(!$rechte->isBerechtigt('mitarbeiter',null,'suid')) + die($rechte->errormsg); + $sql_query="SELECT beschreibung,funktion_kurzbz FROM public.tbl_funktion ORDER BY funktion_kurzbz"; $result_funktion=$db->db_query($sql_query); if(!$result_funktion) die("funktion not found!" .$db->db_last_error()); ?> - + Funktion @@ -71,7 +80,7 @@ if ($result_funktion!=0) echo ' '; for ($i=0;$i<$num_fields; $i++) - echo "".$db->db_field_name($result_funktion,$i).""; + echo "".$db->db_field_name($result_funktion,$i).""; echo ''; echo ''; echo ''; diff --git a/vilesci/personen/urlaubsverwaltung.php b/vilesci/personen/urlaubsverwaltung.php index a2b7632dd..3a2b774d2 100644 --- a/vilesci/personen/urlaubsverwaltung.php +++ b/vilesci/personen/urlaubsverwaltung.php @@ -121,7 +121,7 @@ echo ' $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); -if(!$rechte->isBerechtigt('mitarbeiter/zeitsperre')) +if(!$rechte->isBerechtigt('mitarbeiter/zeitsperre', null, 'suid')) die('Sie haben keine Berechtigung für diese Seite'); //Formular zur Eingabe der UID diff --git a/vilesci/personen/zeitwunsch.php b/vilesci/personen/zeitwunsch.php index 4df8063f1..335860528 100644 --- a/vilesci/personen/zeitwunsch.php +++ b/vilesci/personen/zeitwunsch.php @@ -52,7 +52,7 @@ $uid_benutzer = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid_benutzer); -if(!$rechte->isBerechtigt('mitarbeiter')) +if(!$rechte->isBerechtigt('mitarbeiter', null, 'suid')) die($rechte->errormsg); $datum_obj = new datum(); diff --git a/vilesci/stammdaten/statistik_details.php b/vilesci/stammdaten/statistik_details.php index 4e5af8f5e..bf3c3d6f6 100644 --- a/vilesci/stammdaten/statistik_details.php +++ b/vilesci/stammdaten/statistik_details.php @@ -37,7 +37,7 @@ $user = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); -if(!$rechte->isBerechtigt('basis/statistik')) +if(!$rechte->isBerechtigt('basis/statistik', null, 'suid')) die('Sie haben keine Berechtigung fuer diese Seite'); ?> diff --git a/vilesci/stammdaten/statistik_uebersicht.php b/vilesci/stammdaten/statistik_uebersicht.php index 851f67e84..6d16846a3 100644 --- a/vilesci/stammdaten/statistik_uebersicht.php +++ b/vilesci/stammdaten/statistik_uebersicht.php @@ -27,16 +27,16 @@ $user = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); - -if(!$rechte->isBerechtigt('basis/statistik')) + +if(!$rechte->isBerechtigt('basis/statistik', null, 'suid')) die('Sie haben keine Berechtigung fuer diese Seite'); - + echo ' Statistik - + @@ -45,19 +45,19 @@ echo ' - +