From ddd6abde8cb8e653841d39adfc08141ea424fa5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 25 Sep 2018 14:49:46 +0200 Subject: [PATCH] =?UTF-8?q?Dokumente=20in=20Kategorien=20mit=20gesetzten?= =?UTF-8?q?=20Berechtigungen=20sind=20=C3=BCber=20dms.php=20nicht=20mehr?= =?UTF-8?q?=20zug=C3=A4nglich=20wenn=20die=20Person=20die=20Berechtigung?= =?UTF-8?q?=20nicht=20besitzt=20unabh=C3=A4ngig=20davon=20ob=20diese=20zus?= =?UTF-8?q?=C3=A4tzlich=20=C3=BCber=20eine=20Gruppe=20gesperrt=20ist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/admin_dms.php | 49 ++++++++++++++++++++++--------------------- cms/dms.php | 46 +++++++++++++++++++++++++--------------- include/dms.class.php | 20 +++++++++++------- 3 files changed, 67 insertions(+), 48 deletions(-) diff --git a/cms/admin_dms.php b/cms/admin_dms.php index 11d4e3086..6dce630d9 100644 --- a/cms/admin_dms.php +++ b/cms/admin_dms.php @@ -127,7 +127,7 @@ if (isset($_REQUEST['save'])) $dms->gruppe_kurzbz = $_POST['gruppe_kurzbz']; $dms->insertamum = date('Y-m-d H:i:s'); $dms->insertvon = $user; - + if (! $dms->saveGruppeKategorie()) echo '' . $dms->errormsg . ''; else @@ -145,7 +145,7 @@ if (isset($_REQUEST['save'])) { // wenn keine auswahl getroffen wurde $kategorie_auswahl = (($_POST['kategorie_parent'] == 'auswahl') ? null : $_POST['kategorie_parent']); - + if ($kategorieSave->loadKategorie($_POST['kategorie_kurzbz'])) { // Update @@ -184,7 +184,7 @@ if (isset($_REQUEST['save'])) // Löscht eine Kategorie if (isset($_REQUEST['delete'])) { - + if ($method == 'gruppe') { $dms = new dms(); @@ -205,7 +205,7 @@ if (isset($_REQUEST['delete'])) } else echo "keine Kategorie übergeben"; - + $kategorie_kurzbz = ''; } } @@ -270,7 +270,7 @@ switch ($method) case 'gruppe': print_rights($kategorie_kurzbz); break; - + default: drawKategorie($kategorie_kurzbz); break; @@ -287,7 +287,8 @@ function drawKategorie($kategorie_kurzbz) $kategorie_bezeichnung = ''; $disabled = ''; $kategorie_berechtigung = ''; - + $kategorie_oe_kurzbz = ''; + if ($kategorie->loadKategorie($kategorie_kurzbz)) { // Formular zum Editieren bestehender Kategorien @@ -297,7 +298,7 @@ function drawKategorie($kategorie_kurzbz) $kategorie_berechtigung = $kategorie->berechtigung_kurzbz; $kategorie_oe_kurzbz = $kategorie->kategorie_oe_kurzbz; } - + $allKategorien = new dms(); $allKategorien->getAllKategories(); $berechtigungen = new berechtigung(); @@ -305,7 +306,7 @@ function drawKategorie($kategorie_kurzbz) $organisationseinheiten = new organisationseinheit(); $organisationseinheiten->getAll(true, null, 'organisationseinheittyp_kurzbz, bezeichnung'); $oe_typ = ''; - + // var_dump($allKategorien->result); echo '
@@ -341,13 +342,13 @@ function drawKategorie($kategorie_kurzbz) { if ($oe_typ!='') echo ''; - + echo ''; } $selected = ''; if ($oe->oe_kurzbz == $kategorie_oe_kurzbz) $selected = 'selected'; - + echo ''; $oe_typ = $oe->organisationseinheittyp_kurzbz; } @@ -362,7 +363,7 @@ function drawKategorie($kategorie_kurzbz) $selected = ''; if ($recht->berechtigung_kurzbz == $kategorie_berechtigung) $selected = 'selected'; - + echo ''; } echo ' @@ -427,17 +428,17 @@ function print_rights($kategorie_kurzbz) } else echo 'Diese Seite darf von allen angezeigt werden!

'; - + $gruppe = new gruppe(); $gruppe->getgruppe(null, null, null, null, true); - + // Sortieren der Gruppen nach kurzbz - function sortGruppen($a, $b) - { - return strcasecmp($a->gruppe_kurzbz, $b->gruppe_kurzbz); + function sortGruppen($a, $b) + { + return strcasecmp($a->gruppe_kurzbz, $b->gruppe_kurzbz); } - usort($gruppe->result, "sortGruppen"); - + usort($gruppe->result, "sortGruppen"); + // function sortDocuments($a, $b) // { // $c = $a->anzahl_akten_formal_geprueft - $b->anzahl_akten_formal_geprueft; @@ -449,7 +450,7 @@ function print_rights($kategorie_kurzbz) // } // if ($dokumente_abzugeben) // usort($dokumente_abzugeben, "sortDocuments"); - + echo ''; echo 'Gruppe
diff --git a/cms/dms.php b/cms/dms.php index ad7a102d6..6548dc1e3 100644 --- a/cms/dms.php +++ b/cms/dms.php @@ -43,37 +43,37 @@ else $akte_id =''; //if(!isset($_GET['version'])) -// die('Version muss uebergeben werden'); - +// die('Version muss uebergeben werden'); + $id = $_GET['id']; -$version = isset($_GET['version'])?$_GET['version']:null; +$version = isset($_GET['version'])?$_GET['version']:null; if(!is_numeric($id)) die('ID ist ungueltig'); - + if($version!='' && !is_numeric($version)) - die('Version ist ungueltig'); - + die('Version ist ungueltig'); + $doc = new dms(); if(!$doc->load($id,$version)) die('Dieses Dokument existiert nicht mehr'); if($doc->isLocked($id)) { - //Wenn person_id aus Session und akte_id uebergeben wurde - //und person_id Besitzer des Dokuments ist (person_id aus tbl_akte) + //Wenn person_id aus Session und akte_id uebergeben wurde + //und person_id Besitzer des Dokuments ist (person_id aus tbl_akte) //und das Dokument in der Onlinebewerbung hochgeladen werden kann //darf das Dokument heruntergeladen werden if($person_id!='' && $akte_id!='') - { + { $akte = new akte(); $akte->load($akte_id); $akte_person = $akte->person_id; $akte_dokument_kurzbz = $akte->dokument_kurzbz; - + $dokumente_person = new dokument(); $dokumente_person->getAllDokumenteForPerson($person_id, true); - + $dokumente_arr = array(); foreach ($dokumente_person->result AS $row) $dokumente_arr[] .= $row->dokument_kurzbz; @@ -90,11 +90,23 @@ if($doc->isLocked($id)) { //Dokument erfordert Authentifizierung $user = get_uid(); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + if(!$doc->isBerechtigt($id, $user)) { + // Wenn eine Berechtigung an der Kategorie haengt + // dann darf nur mit diesem Recht darauf zugegriffen werden + $kategorie = new dms(); + $kategorie->loadKategorie($doc->kategorie_kurzbz); + if($kategorie->berechtigung_kurzbz!='') + { + if(!$rechte->isBerechtigt($kategorie->berechtigung_kurzbz)) + die('Sie haben keinen Zugriff auf dieses Dokument'); + } + //Globales DMS recht pruefen - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/dms')) die('Sie haben keinen Zugriff auf dieses Dokument'); } @@ -111,12 +123,12 @@ if(file_exists($filename)) { if($doc->mimetype=='') $doc->mimetype='application/octetstream'; - + header('Content-type: '.$doc->mimetype); header('Content-Disposition: inline; filename="'.$doc->name.'"'); header('Content-Length: ' .filesize($filename)); - - while (!feof($handle)) + + while (!feof($handle)) { echo fread($handle, 8192); } @@ -127,4 +139,4 @@ if(file_exists($filename)) } else echo 'Die Datei existiert nicht'; -?> \ No newline at end of file +?> diff --git a/include/dms.class.php b/include/dms.class.php index f16580c85..98cfbdd9a 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -1179,9 +1179,7 @@ class dms extends basis_db */ function isLocked($dms_id) { - $qry = "SELECT 1 FROM - ( - WITH RECURSIVE kategorien(parent_kategorie_kurzbz) as + $qry = "WITH RECURSIVE kategorien(parent_kategorie_kurzbz) as ( SELECT parent_kategorie_kurzbz FROM campus.tbl_dms_kategorie WHERE kategorie_kurzbz=(SELECT kategorie_kurzbz FROM campus.tbl_dms WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER).") @@ -1192,12 +1190,20 @@ class dms extends basis_db WHERE k.kategorie_kurzbz=kategorien.parent_kategorie_kurzbz ) - SELECT parent_kategorie_kurzbz - FROM kategorien - ) a - JOIN campus.tbl_dms_kategorie_gruppe ON(a.parent_kategorie_kurzbz=kategorie_kurzbz) + SELECT + 1 + FROM + kategorien + JOIN campus.tbl_dms_kategorie_gruppe ON(kategorien.parent_kategorie_kurzbz=kategorie_kurzbz) UNION SELECT 1 FROM fue.tbl_projekt_dokument WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)." + UNION + SELECT + 1 + FROM + kategorien + JOIN campus.tbl_dms_kategorie ON(kategorien.parent_kategorie_kurzbz=kategorie_kurzbz) + WHERE berechtigung_kurzbz is not null ;"; if($result = $this->db_query($qry))