From 98f25028eb687a40931360e8b9884c3184e752cc Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 23 May 2018 10:07:51 +0200 Subject: [PATCH] Rechte-Fix Mailverteiler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Funktion Hochschulvertretung hinzugefügt Rechte-Abfrage in open_grp.php --- cis/private/mailverteiler.php | 4 ++- cis/private/open_grp.php | 40 ++++++++++++++++++++++++++++-- include/benutzerfunktion.class.php | 10 ++++++-- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/cis/private/mailverteiler.php b/cis/private/mailverteiler.php index a4e614f0e..7a0736b05 100644 --- a/cis/private/mailverteiler.php +++ b/cis/private/mailverteiler.php @@ -46,7 +46,9 @@ $std_obj = new student($user); if(!$is_lector) { $fkt = new benutzerfunktion(); - if($fkt->benutzerfunktion_exists($user, 'stdv')) + if($fkt->benutzerfunktion_exists($user, 'stdv', true)) // Studienvertretung + $is_stdv=true; + elseif($fkt->benutzerfunktion_exists($user, 'hsv', true)) // Hochschulvertretung $is_stdv=true; } diff --git a/cis/private/open_grp.php b/cis/private/open_grp.php index aca6272d4..76a1e9016 100644 --- a/cis/private/open_grp.php +++ b/cis/private/open_grp.php @@ -24,13 +24,31 @@ require_once('../../include/functions.inc.php'); require_once('../../include/phrasen.class.php'); require_once('../../include/basis_db.class.php'); require_once('../../include/gruppe.class.php'); +require_once('../../include/student.class.php'); +require_once('../../include/benutzerfunktion.class.php'); +require_once('../../include/studiengang.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); $uid = get_uid(); + +$is_lector=check_lektor($uid); +$is_stdv=false; +$std_obj = new student($uid); + +//Studien- und Hochschulvertreter duerfen den Verteiler tw_std oeffnen +if(!$is_lector) +{ + $fkt = new benutzerfunktion(); + if($fkt->benutzerfunktion_exists($uid, 'stdv', true)) // Studienvertretung + $is_stdv=true; + elseif($fkt->benutzerfunktion_exists($uid, 'hsv', true)) // Hochschulvertretung + $is_stdv=true; +} + $db = new basis_db(); if (!isset($_REQUEST['grp'])) - die('Falsche Parameter'); + die('Parameter "grp" wurde nicht uebergeben'); if (mb_strlen($_REQUEST['grp'])>32) die('Grp ungueltig'); @@ -41,12 +59,30 @@ if (!$gruppe->exists($_REQUEST['grp'])) { //Wenn es keine Gruppe in der DB ist, kann es //noch ein Studierendenverteiler sein - //bif_std + //zb bif_std oder tw_std if (!preg_match('/^\D\D\D_std$/', $_REQUEST['grp'])) { die('Ungueltige Gruppe'); } + else + { + // Kürzel aus Gruppe auslesen + $studiengang_kuerzel = substr($_REQUEST['grp'], 0, strpos($_REQUEST['grp'], '_')); + $studiengang = new studiengang(); + $studiengang->getStudiengangFromOe($studiengang_kuerzel); + + // Lektoren oder Studierende dieses Studiengangs dürfen + if (!$is_lector && $std_obj->studiengang_kz != $studiengang->studiengang_kz) + die('Sie haben keine Berechtigung zum öffnen dieses Mailverteilers'); + } } +elseif (!$is_lector && $_REQUEST['grp'] == 'tw_std') +{ + //Studien- und Hochschulvertreter duerfen den Verteiler tw_std oeffnen + if ($is_stdv === false) + die('!$is_lector Sie haben keine Berechtigung zum öffnen dieses Mailverteilers'); +} + function mail_id_generator() { mt_srand((double)microtime()*1000000); diff --git a/include/benutzerfunktion.class.php b/include/benutzerfunktion.class.php index 08270da67..0ad8bde1f 100644 --- a/include/benutzerfunktion.class.php +++ b/include/benutzerfunktion.class.php @@ -102,12 +102,18 @@ class benutzerfunktion extends basis_db /** * Prueft ob der Benutzer $uid die - * Funktion $benutzerfunktion hat + * Funktion $benutzerfunktion hat. Der optionale Parameter $gueltig prüft zusätzlich auf das Gültigkeitsdatum. + * @param string $uid + * @param string $benutzerfunktion + * @param boolean $gueltig. Default=false. Wenn true, wird zusätzlich das Gültigkeitsdatum geprüft */ - public function benutzerfunktion_exists($uid, $benutzerfunktion) + public function benutzerfunktion_exists($uid, $benutzerfunktion, $gueltig = false) { $qry = "SELECT count(*) as anzahl FROM public.tbl_benutzerfunktion WHERE uid=".$this->db_add_param($uid)." AND funktion_kurzbz=".$this->db_add_param($benutzerfunktion); + + if ($gueltig = TRUE) + $qry .= ' AND (datum_von IS NULL OR datum_von <= now()) AND (datum_bis IS NULL OR datum_bis >= now()) '; if($row = $this->db_fetch_object($this->db_query($qry))) {