Dokumente in Kategorien mit gesetzten Berechtigungen sind über dms.php nicht mehr zugänglich wenn die Person die Berechtigung nicht besitzt unabhängig davon ob diese zusätzlich über eine Gruppe gesperrt ist

This commit is contained in:
Andreas Österreicher
2018-09-25 14:49:46 +02:00
parent e2fd07aa84
commit ddd6abde8c
3 changed files with 67 additions and 48 deletions
+25 -24
View File
@@ -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 '<span class="error">' . $dms->errormsg . '</span>';
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 ' <form action="' . $_SERVER['PHP_SELF'] . '?save" method="POST" name="form_kategorie">
<table border="0">
@@ -341,13 +342,13 @@ function drawKategorie($kategorie_kurzbz)
{
if ($oe_typ!='')
echo '</optgroup>';
echo '<optgroup label="'.$oe->organisationseinheittyp_kurzbz.'">';
}
$selected = '';
if ($oe->oe_kurzbz == $kategorie_oe_kurzbz)
$selected = 'selected';
echo '<option ' . $selected . ' value="' . $oe->oe_kurzbz . '">'.$oe->organisationseinheittyp_kurzbz.' ' . $oe->bezeichnung . '</option>';
$oe_typ = $oe->organisationseinheittyp_kurzbz;
}
@@ -362,7 +363,7 @@ function drawKategorie($kategorie_kurzbz)
$selected = '';
if ($recht->berechtigung_kurzbz == $kategorie_berechtigung)
$selected = 'selected';
echo '<option ' . $selected . ' value="' . $recht->berechtigung_kurzbz . '">' . $recht->berechtigung_kurzbz . '</option>';
}
echo ' </select>
@@ -427,17 +428,17 @@ function print_rights($kategorie_kurzbz)
}
else
echo 'Diese Seite darf von allen angezeigt werden!<br><br>';
$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 '<form action="' . $_SERVER['PHP_SELF'] . '?kategorie_kurzbz=' . $kategorie_kurzbz . '&method=gruppe&save" method="POST">';
echo 'Gruppe <select name="gruppe_kurzbz">';
foreach ($gruppe->result as $row)
@@ -472,7 +473,7 @@ function print_rights($kategorie_kurzbz)
function drawKategorieMenue($rows)
{
global $kategorie_kurzbz;
// echo '<ul>';
foreach ($rows as $row)
{
@@ -480,12 +481,12 @@ function drawKategorieMenue($rows)
$class = 'marked';
else
$class = '';
$dms = new dms();
$dms->getKategorie($row->kategorie_kurzbz);
$delete = '<a href="' . $_SERVER['PHP_SELF'] . '?delete&kategorie_kurzbz=' . $row->kategorie_kurzbz . '"><img src="../skin/images/cross.png" height="12px" title="Kategorie löschen" /></a>';
// Suchen, ob eine Sperre fuer diese Kategorie vorhanden ist
$groups = $dms->getLockGroups($row->kategorie_kurzbz);
$locked = '';
@@ -498,7 +499,7 @@ function drawKategorieMenue($rows)
}
if (count($dms->result) > 0)
{
echo '
<tr>
<td class="tdwidth10" nowrap>&nbsp;</td>
+29 -17
View File
@@ -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';
?>
?>
+13 -7
View File
@@ -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))