Merge branch 'benutzerberechtigungGUIneu'

This commit is contained in:
Manfred
2023-04-11 13:24:56 +02:00
6 changed files with 1764 additions and 438 deletions
+37
View File
@@ -312,5 +312,42 @@ class berechtigung extends basis_db
return false;
}
}
/**
* Sucht nach Berechtigungen
* @param string $searchItem Suchbegriff
* @return boolean
*/
public function searchBerechtigungen($searchItem)
{
$this->result=array();
$qry = 'SELECT * FROM system.tbl_berechtigung WHERE
(
LOWER(berechtigung_kurzbz) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\')
OR
LOWER(beschreibung) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\')
)';
$qry .= ' ORDER BY berechtigung_kurzbz';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new berechtigung();
$obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
$obj->beschreibung = $row->beschreibung;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Berechtigungen';
return false;
}
}
}
?>
@@ -0,0 +1,139 @@
<?php
/*
* Copyright (C) 2010 Technikum-Wien
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* Authors: Manfred Kindl <kindlm@technikum-wien.at>
*/
require_once ('../../config/vilesci.config.inc.php');
require_once ('../../include/functions.inc.php');
require_once ('../../include/basis_db.class.php');
require_once ('../../include/ort.class.php');
require_once ('../../include/benutzer.class.php');
require_once ('../../include/studiengang.class.php');
require_once ('../../include/berechtigung.class.php');
require_once ('../../include/organisationseinheit.class.php');
require_once ('../../include/sprache.class.php');
require_once ('../../include/wawi_kostenstelle.class.php');
if (! $db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$uid = get_uid();
$sprache = getSprache();
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'benutzer')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$benutzer = new benutzer();
if ($benutzer->search(array(
$search
)))
{
$result_obj = array();
foreach ($benutzer->result as $row)
{
$item['vorname'] = html_entity_decode($row->vorname);
$item['nachname'] = html_entity_decode($row->nachname);
$item['uid'] = html_entity_decode($row->uid);
$result_obj[] = $item;
}
echo json_encode($result_obj);
}
exit();
}
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'berechtigung')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$berechtigung = new berechtigung();
if ($berechtigung->searchBerechtigungen($search))
{
$result_obj = array();
foreach ($berechtigung->result as $row)
{
$item['berechtigung_kurzbz'] = html_entity_decode($row->berechtigung_kurzbz);
$item['beschreibung'] = html_entity_decode($row->beschreibung);
$result_obj[] = $item;
}
echo json_encode($result_obj);
}
exit();
}
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'oe_kurzbz')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$search = array($search);
$oe = new organisationseinheit();
$oe->search($search);
$stg = new studiengang();
$stg->search($search);
foreach($stg->result as $row)
{
if($row->aktiv===true)
$oe->result[] = new organisationseinheit($row->oe_kurzbz);
}
if(is_array($oe->result) && count($oe->result) > 0)
{
$result_obj = array();
foreach($oe->result as $row)
{
if($row->aktiv==true)
{
$item['oe_kurzbz'] = html_entity_decode($row->oe_kurzbz);
$item['organisationseinheittyp_kurzbz'] = html_entity_decode($row->organisationseinheittyp_kurzbz);
$item['bezeichnung'] = html_entity_decode($row->bezeichnung);
$result_obj[] = $item;
}
}
echo json_encode($result_obj);
}
exit();
}
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'kostenstelle')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$kst = new wawi_kostenstelle();
if ($kst->getAll($search))
{
$result_obj = array();
foreach ($kst->result as $row)
{
$item['kostenstelle_id'] = html_entity_decode($row->kostenstelle_id);
$item['bezeichnung'] = html_entity_decode($row->bezeichnung);
$result_obj[] = $item;
}
echo json_encode($result_obj);
}
exit();
}
?>
@@ -0,0 +1,166 @@
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/berechtigung.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/funktion.class.php');
require_once('../../include/organisationseinheit.class.php');
require_once('../../include/wawi_kostenstelle.class.php');
require_once('../../include/benutzer.class.php');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$uid = isset($_GET['uid']) && $_GET['uid']!='' ? $_GET['uid'] : die('UID muss übergeben werden');
$benutzer = new benutzer();
$benutzer->load($uid);
if(!$rechte->isBerechtigt('basis/berechtigung'))
die('Sie habe keine Rechte um diese Seite anzuzeigen');
?>
<html>
<head>
<title>Detaillierte Berechtigungsliste</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link href="../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
<?php
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
?>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script>
$(document).ready(function() {
$("#t1").tablesorter(
{
sortList: [[0, 0], [1, 0], [2, 0]],
widgets: ["zebra", "filter", "stickyHeaders"],
widgetOptions: {
filter_functions: {
// Add select menu to this column
8: {
"Aktive/Wartende": function (e, n, f, i, $r, c, data) {
return e == 'Aktiv' || e == 'Wartend';
},
"Aktive": function (e, n, f, i, $r, c, data) {
return /Aktiv/.test(e);
},
"Wartende": function (e, n, f, i, $r, c, data) {
return /Wartend/.test(e);
},
"Inaktive": function (e, n, f, i, $r, c, data) {
return /Inaktiv/.test(e);
}
}
}
}
});
});
</script>
</head>
<body class="background_main">
<h2>Detaillierte Berechtigungsliste von <?php echo $benutzer->vorname.' '.$benutzer->nachname ?></h2>
<?php
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
$funktionsArray = array();
$funktionen = new funktion();
$funktionen->getAll();
foreach ($funktionen->result as $item)
{
$funktionsArray[$item->funktion_kurzbz] = $item->beschreibung;
}
$kostenstelleArray = array();
$kostenstellen = new wawi_kostenstelle();
$kostenstellen->getAll();
foreach ($kostenstellen->result as $item)
{
$kostenstelleArray[$item->kostenstelle_id] = $item->bezeichnung.' ('.$item->kostenstelle_id.')';
}
$oeArray = array();
$oes = new organisationseinheit();
$oes->getAll();
foreach ($oes->result as $item)
{
$oeArray[$item->oe_kurzbz] = $item->organisationseinheittyp_kurzbz.' '.$item->bezeichnung;
}
$heute = strtotime(date('Y-m-d'));
echo '<table id="t1" class="tablesorter">
<thead><tr>
<th>Funktion</th>
<th>Rolle</th>
<th>Recht</th>
<th>Art</th>
<th>Organisationseinheit</th>
<th>Kostenstelle</th>
<th>Gültig ab</th>
<th>Gültig bis</th>
<th data-value="Aktive/Wartende">Status</th>
</tr></thead><tbody>';
foreach ($rechte->berechtigungen AS $key)
{
if ($key->ende!='' && strtotime($key->ende) < $heute)
{
$titel="Inaktiv";
}
elseif ($key->start!='' && strtotime($key->start) > $heute)
{
$titel="Wartend";
}
else
{
$titel="Aktiv";
}
echo '<tr>';
echo '<td>'.($key->funktion_kurzbz != '' ? $funktionsArray[$key->funktion_kurzbz] : '').'</td>';
echo '<td>'.($key->rolle_kurzbz != '' ? $key->rolle_kurzbz : '').'</td>';
echo '<td>'.($key->berechtigung_kurzbz != '' ? $key->berechtigung_kurzbz : '').'</td>';
echo '<td>'.($key->art != '' ? $key->art : '').'</td>';
echo '<td>'.($key->oe_kurzbz != '' ? $oeArray[$key->oe_kurzbz] : '').'</td>';
echo '<td>'.($key->kostenstelle_id != '' ? $kostenstelleArray[$key->kostenstelle_id] : '').'</td>';
echo '<td>'.($key->start != '' ? $key->start : '').'</td>';
echo '<td>'.($key->ende != '' ? $key->ende : '').'</td>';
echo '<td>'.$titel.'</td>';
echo '</tr>';
}
echo '</tbody></table>';
?>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -73,7 +73,7 @@ $(document).ready(function()
{
// Add select menu to this column
6 : {
"Ja" : function(e, n, f, i, $r, c, data) { return /Ja/.test(e); },
"Ja" : function(e, n, f, i, $r, c, data) { return e == "Ja" || e == "" },
"Nein" : function(e, n, f, i, $r, c, data) { return /Nein/.test(e); }
},
7 : {
@@ -361,7 +361,15 @@ if($berechtigung_kurzbz != '')
{
$htmlstr .= "<h3>".$berechtigung_kurzbz."</h3>\n";
$htmlstr .= "<table id='t2' class='tablesorter'><thead><tr>\n";
$htmlstr .= "<th>Rolle</th><th>Funktion</th><th>Nachname</th><th>Vorname</th><th>UID</th><th>Art</th><th>Benutzer Aktiv</th><th>Status</th><th>Aktion</th>";
$htmlstr .= "<th>Rolle</th>
<th>Funktion</th>
<th>Nachname</th>
<th>Vorname</th>
<th>UID</th>
<th>Art</th>
<th data-value='Ja'>Benutzer Aktiv</th>
<th data-value='Aktiv'>Status</th>
<th>Aktion</th>";
$htmlstr .= "</tr></thead><tbody>\n";
foreach($berechtigungen->result as $row)
@@ -554,8 +562,8 @@ if($rolle_kurzbz != '')
<th>Vorname</th>
<th>UID</th>
<th>Art</th>
<th>Benutzer Aktiv</th>
<th>Status</th>
<th data-value='Ja'>Benutzer Aktiv</th>
<th data-value='Aktiv'>Status</th>
<th>Aktion</th>";
$htmlstr .= "</tr></thead><tbody>\n";
+99 -35
View File
@@ -41,27 +41,59 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
<title>Berechtigungen Uebersicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link href="../../skin/tablesort.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../vendor/jquery/jquery1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<link href="../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
<?php
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
?>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script language="Javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {3:{sorter:false}}
});
$("#t2").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {2:{sorter:false}}
});
// Breite des Autocompletes korrigieren um das Springen zu verhindern
$.extend($.ui.autocomplete.prototype.options, {
open: function(event, ui) {
$(this).autocomplete("widget").css({
"width": ($(".ui-menu-item").width()+ 20 + "px"),
"padding-left": "5px"
});
}
});
$(".berechtigung_autocomplete").autocomplete({
source: "benutzerberechtigung_autocomplete.php?autocomplete=berechtigung",
minLength:2,
response: function(event, ui)
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {3:{sorter:false}}
});
$("#t2").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {2:{sorter:false}}
});
});
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].berechtigung_kurzbz;
ui.content[i].label=ui.content[i].berechtigung_kurzbz+" - "+ui.content[i].beschreibung;
}
},
select: function(event, ui)
{
//Ausgewaehlte Ressource zuweisen und Textfeld wieder leeren
$(this).val(ui.item.berechtigung_kurzbz);
}
});
});
function confdel()
{
var value=prompt('Achtung! Sie sind dabei eine Rolle zu löschen. Die Zuordnungen gehen dadurch verloren! Um diese Rolle wirklich zu Löschen tippen Sie "LÖSCHEN" in das untenstehende Feld.');
@@ -71,11 +103,42 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
else
return false;
}
function validateNewData()
{
if($('#berechtigung_neu_autocomplete').val() == '')
{
alert('Berechtigung darf nicht leer sein')
return false;
}
else if ($('#art_neu').val() == '')
{
alert('Art darf nicht leer sein')
return false;
}
else if ($('#art_neu').val() != '')
{
var eingabe, c, erlaubt = 'suid', laenge;
eingabe = $('#art_neu').val();
eingabe = eingabe.toLowerCase();
laenge = eingabe.length;
for (c = 0; c < laenge; c++)
{
d = eingabe.charAt(c);
if (erlaubt.indexOf(d) == -1)
{
alert ('Erlaubte Werte für Art sind s,u,i,d');
return false;
}
}
}
else
return true;
}
</script>
</head>
<body class="background_main">
<h2>Berechtigung - Rolle - Übersicht</h2>
<h2>Berechtigung - Rolle - <?php echo $rolle_kurzbz ?></h2>
<?php
if(isset($rolle_kurzbz))
@@ -107,25 +170,24 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
if(!$berechtigung->deleteRolleBerechtigung($rolle_kurzbz, $berechtigung_kurzbz)): ?>
<b>Fehler beim Löschen: </b><?php echo $berechtigung->errormsg ?>
<?php else: ?>
<b>Berechtigung gelöscht!</b>
<b>Berechtigung <?php echo $berechtigung_kurzbz.' mit '.$art ?> gelöscht!</b>
<?php endif;
} ?>
<br>
<a href="<?php echo basename(__FILE__) ?>">
Zurück
Zurück zur Rollenübersicht
</a>
<h3>RolleBerechtigung "<?php echo $rolle_kurzbz ?>":</h3>
<br><br>
<?php
$berechtigung = new berechtigung();
$berechtigung->getBerechtigungen();
?>
<form action="<?php echo basename(__FILE__) ?>" method="GET">
<input type="text" placeholder="Berechtigung" id="berechtigung_neu_autocomplete" class="berechtigung_autocomplete" name="berechtigung_kurzbz" style="width: 300px">
<input type="hidden" name="rolle_kurzbz" value="<?php echo $rolle_kurzbz ?>">
<SELECT name="berechtigung_kurzbz">
<!-- <SELECT name="berechtigung_kurzbz">-->
<?php
$berechtigungen = new berechtigung();
/*$berechtigungen = new berechtigung();
$berechtigungen->getRolleBerechtigung($rolle_kurzbz);
$berechtigungen_arr = array();
foreach ($berechtigungen->result as $row)
@@ -137,10 +199,10 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
<?php echo array_search($row->berechtigung_kurzbz,$berechtigungen_arr)!==false ? 'disabled' : '' ?>>
<?php echo $row->berechtigung_kurzbz ?>
</OPTION>
<?php endforeach; ?>
</SELECT>
<input type="text" value="suid" size="4" name="art">
<input type="submit" name="save" value="Hinzufügen">
<?php endforeach; */?>
<!-- </SELECT>-->
<input type="text" id="art_neu" value="suid" size="4" name="art">
<input type="submit" name="save" value="Hinzufügen" onclick="return validateNewData()">
</form>
<table id="t1" class="tablesorter">
@@ -154,6 +216,8 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
</thead>
<tbody>
<?php
$berechtigungen = new berechtigung();
$berechtigungen->getRolleBerechtigung($rolle_kurzbz);
foreach($berechtigungen->result as $rolle): ?>
<tr>
@@ -161,7 +225,7 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
<td><?php echo $rolle->art ?></td>
<td><?php echo $rolle->beschreibung ?></td>
<td>
<a href="<?php echo basename(__FILE__) ?>?delete=1&rolle_kurzbz=<?php echo $rolle->rolle_kurzbz ?>&berechtigung_kurzbz=<?php echo $rolle->berechtigung_kurzbz ?>">
<a href="<?php echo basename(__FILE__) ?>?delete=1&rolle_kurzbz=<?php echo $rolle->rolle_kurzbz ?>&berechtigung_kurzbz=<?php echo $rolle->berechtigung_kurzbz ?>&art=<?php echo $rolle->art ?>">
entfernen
</a>
</td>
@@ -270,24 +334,24 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
</tbody>
</table>
<br>
<br><div style="vertical-align: top">
<?php
if($edit):
?>
<form method="POST">
Kurzbz: <input type="text" name="kurzbz" value="<?php echo $rolle_edit->rolle_kurzbz ?>" disabled />
Beschreibung: <input type="text" name="beschreibung" value="<?php echo $rolle_edit->beschreibung ?>" />
Kurzbz: <input type="text" maxlength="32" size="35" name="kurzbz" value="<?php echo $rolle_edit->rolle_kurzbz ?>" disabled />
Beschreibung: <textarea style="vertical-align: top; font-family: inherit; font-size: small;" cols="50" rows="3" type="text" maxlength="256" size="200" name="beschreibung" value="" /><?php echo $rolle_edit->beschreibung ?></textarea>
&nbsp;<input type="submit" name="edit" value="Speichern" />
</form>
<a href="<?php echo basename(__FILE__) ?>">Neue Rolle anlegen</a>
<?php else: ?>
<form method="POST">
Kurzbz: <input type="text" name="kurzbz" value="" />
Beschreibung: <input type="text" name="beschreibung" value="" />
Kurzbz: <input type="text" maxlength="32" size="35" name="kurzbz" value="" />
Beschreibung: <textarea style="vertical-align: top; font-family: inherit; font-size: small;" cols="50" rows="3" type="text" maxlength="256" size="200" name="beschreibung" value="" /></textarea>
&nbsp;<input type="submit" name="save" value="Anlegen" />
</form>
<?php endif; ?>
<?php } ?>
</div>
</body>
</html>