Benutzerberechtigung Option "Nur User"

Zeigt heruntergebrochen auf User, welche User welche Berechtiung haben
This commit is contained in:
Manfred Kindl
2018-03-19 16:11:59 +01:00
parent 0d2ca75c70
commit 497b10f8c5
2 changed files with 251 additions and 74 deletions
+4
View File
@@ -1065,6 +1065,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
* @return boolean true wenn ok, false im Fehlerfall
*/
public function getBenutzerFromBerechtigung($berechtigung_kurzbz, $inklusiveRollen = true, $oe_kurzbz = null)
@@ -1073,6 +1074,7 @@ class benutzerberechtigung extends basis_db
benutzerberechtigung_id,
rolle_kurzbz,
funktion_kurzbz,
oe_kurzbz,
uid,
art,
berechtigung_kurzbz,
@@ -1095,6 +1097,7 @@ class benutzerberechtigung extends basis_db
rolle_kurzbz,
NULL,
NULL,
NULL,
art,
berechtigung_kurzbz,
NULL,
@@ -1118,6 +1121,7 @@ class benutzerberechtigung extends basis_db
$obj->uid = $row->uid;
$obj->funktion_kurzbz = $row->funktion_kurzbz;
$obj->art = $row->art;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->start = $row->start;
$obj->ende = $row->ende;
@@ -27,6 +27,8 @@ require_once('../../include/studiengang.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/berechtigung.class.php');
require_once ('../../include/organisationseinheit.class.php');
require_once ('../../include/benutzerfunktion.class.php');
echo '<html>
<head>
@@ -52,20 +54,34 @@ function checkLength()
}
$(document).ready(function()
{
$("#erweitertesuche").hide();
if ($("#berechtigung_kurzbz").val() == "" && $("#rolle_kurzbz").val() == "")
$("#erweitertesuche").hide();
$("#t1").tablesorter(
{
sortList: [[0,0],[1,0],[2,0]],
widgets: ["zebra"],
headers: {4:{sorter:false}}
sortList: [[0,0],[1,0],[2,0]],
widgets: ["zebra"],
headers: {4:{sorter:false}}
});
$("#t2").tablesorter(
{
sortList: [[1,0],[2,0],[3,0],[4,0]],
widgets: ["zebra"],
headers: {8:{sorter:false}},
emptyTo: "emptyMax"
sortList: [[0,0],[1,0],[2,0],[3,0]],
widgets: ["zebra", "filter", "stickyHeaders"],
headers: {4:{sorter:false}},
emptyTo: "emptyMax",
widgetOptions : { filter_functions:
{
// Add select menu to this column
7 : {
"Ja" : function(e, n, f, i, $r, c, data) { return /Ja/.test(e); },
"Nein" : function(e, n, f, i, $r, c, data) { return /Nein/.test(e); }
},
8 : {
"Aktiv" : function(e, n, f, i, $r, c, data) { return $r.find("div").hasClass( "buttonGreen" ); },
"Inaktiv" : function(e, n, f, i, $r, c, data) { return $r.find("div").hasClass( "buttonRed" ) || $r.find("div").hasClass( "buttonYellow" ); }
}
}
}
});
$("#t3").tablesorter(
{
@@ -77,6 +93,58 @@ $(document).ready(function()
});
</script>
<style>
.buttonGreen
{
width: 10px;
height: 10px;
background: #d1fab9;
background-image: -webkit-linear-gradient(top, #d1fab9, #00de00);
background-image: -moz-linear-gradient(top, #d1fab9, #00de00);
background-image: -ms-linear-gradient(top, #d1fab9, #00de00);
background-image: -o-linear-gradient(top, #d1fab9, #00de00);
background-image: linear-gradient(to bottom, #d1fab9, #00de00);
-webkit-border-radius: 10;
-moz-border-radius: 10;
border-radius: 10px;
border: solid #999 1px;
text-decoration: none;
}
.buttonYellow
{
width: 10px;
height: 10px;
background: #faf7b9;
background-image: -webkit-linear-gradient(top, #faf7b9, #cfde00);
background-image: -moz-linear-gradient(top, #faf7b9, #cfde00);
background-image: -ms-linear-gradient(top, #faf7b9, #cfde00);
background-image: -o-linear-gradient(top, #faf7b9, #cfde00);
background-image: linear-gradient(to bottom, #faf7b9, #cfde00);
-webkit-border-radius: 10;
-moz-border-radius: 10;
border-radius: 10px;
border: solid #999 1px;
text-decoration: none;
}
.buttonRed
{
width: 10px;
height: 10px;
background: #f79c9c;
background-image: -webkit-linear-gradient(top, #f79c9c, #cc0202);
background-image: -moz-linear-gradient(top, #f79c9c, #cc0202);
background-image: -ms-linear-gradient(top, #f79c9c, #cc0202);
background-image: -o-linear-gradient(top, #f79c9c, #cc0202);
background-image: linear-gradient(to bottom, #f79c9c, #cc0202);
-webkit-border-radius: 10;
-moz-border-radius: 10;
border-radius: 10px;
border: solid #999 1px;
text-decoration: none;
}
</style>
</head>
@@ -102,6 +170,7 @@ $benutzerart = (isset($_GET['benutzerart'])?$_GET['benutzerart']:'');
$benutzeraktiv = (isset($_GET['aktiv'])?$_GET['aktiv']:'aktiv');
$berechtigung_kurzbz = (isset($_GET['berechtigung_kurzbz'])?$_GET['berechtigung_kurzbz']:'');
$rolle_kurzbz = (isset($_GET['rolle_kurzbz'])?$_GET['rolle_kurzbz']:'');
$userOnly = (isset($_GET['userOnly']) ? true : false);
$htmlstr='
<table width="100%">
@@ -141,6 +210,7 @@ $htmlstr='
$htmlstr .= '<option value="'.$berechtigung->berechtigung_kurzbz.'" title="'.$berechtigung->beschreibung.'" '.$selected.'>'.$berechtigung->berechtigung_kurzbz.'</option>';
}
$htmlstr .= '</select>
<input type="checkbox" name="userOnly" ' . ($userOnly == true ? 'checked' : '') . '> Nur User
<input type="submit" value="Suchen">
</form><hr>
<form accept-charset="UTF-8" name="searchrollen" method="GET">
@@ -247,77 +317,180 @@ if(isset($_GET['searchstr']))
if($berechtigung_kurzbz != '')
{
$berechtigungen = new benutzerberechtigung();
$berechtigungen->getBenutzerFromBerechtigung($berechtigung_kurzbz);
if(isset($berechtigungen->result) && count($berechtigungen->result) != 0)
{
$htmlstr .= "<table id='t2' class='tablesorter'><thead><tr>\n";
$htmlstr .= "<th>Berechtigung</th><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 .= "</tr></thead><tbody>\n";
foreach($berechtigungen->result as $row)
// Wenn $userOnly false ist, werden die Rollen und Funktionen ausgegeben, die das Recht beinhalten,
// ansonsten werden die Rollen und Funktionen auf User aufgelöst und nur User ausgegeben
if ($userOnly == false)
{
$berechtigungen->getBenutzerFromBerechtigung($berechtigung_kurzbz);
if(isset($berechtigungen->result) && count($berechtigungen->result) != 0)
{
$benutzer = new benutzer();
$benutzer->load($row->uid);
$heute = strtotime(date('Y-m-d'));
if ($row->ende!='' && strtotime($row->ende) < $heute)
$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 .= "</tr></thead><tbody>\n";
foreach($berechtigungen->result as $row)
{
$color1 = '#f79c9c';
$color2 = '#cc0202';
$benutzer = new benutzer();
$benutzer->load($row->uid);
$heute = strtotime(date('Y-m-d'));
if ($row->ende!='' && strtotime($row->ende) < $heute)
{
$status = '<div class="buttonRed"></div>';
}
elseif ($row->start!='' && strtotime($row->start) > $heute)
{
$status = '<div class="buttonYellow"></div>';
}
else
{
$status = '<div class="buttonGreen"></div>';
}
$htmlstr .= ' <tr>';
$htmlstr .= ' <td>'.($row->rolle_kurzbz != ''?$row->rolle_kurzbz:'').'</td>';
$htmlstr .= ' <td>'.($row->funktion_kurzbz != ''?$row->funktion_kurzbz:'').'</td>';
$htmlstr .= ' <td>'.($benutzer->nachname != ''?$benutzer->nachname:'').'</td>';
$htmlstr .= ' <td>'.($benutzer->vorname != ''?$benutzer->vorname:'').'</td>';
$htmlstr .= ' <td>'.($row->uid != ''?$row->uid:'').'</td>';
$htmlstr .= ' <td>'.$row->art.'</td>';
$htmlstr .= ' <td>'.(isset($row->uid)?$benutzer->bnaktiv?'Ja':'Nein':'').'</td>';
$htmlstr .= ' <td align="center">'.$status.'</td>';
if ($row->uid != '')
$htmlstr .= ' <td><a href="benutzerberechtigung_details.php?uid='.$row->uid.'" target="vilesci_detail">Benutzerrechte bearbeiten</a></td>';
elseif ($row->funktion_kurzbz != '')
$htmlstr .= ' <td><a href="benutzerberechtigung_details.php?funktion_kurzbz='.$row->funktion_kurzbz.'" target="vilesci_detail">Funktionsrechte bearbeiten</a></td>';
elseif ($row->rolle_kurzbz != '')
$htmlstr .= ' <td><a href="berechtigungrolle.php?rolle_kurzbz='.$row->rolle_kurzbz.'" target="vilesci_detail">Rollenrechte bearbeiten</a></td>';
$htmlstr .= ' </tr>';
}
elseif ($row->start!='' && strtotime($row->start) > $heute)
{
$color1 = '#faf7b9';
$color2 = '#cfde00';
}
else
{
$color1 = '#d1fab9';
$color2 = '#00de00';
}
$status='<div style="
width: 10px;
height: 10px;
background: '.$color1.';
background-image: -webkit-linear-gradient(top, '.$color1.', '.$color2.');
background-image: -moz-linear-gradient(top, '.$color1.', '.$color2.');
background-image: -ms-linear-gradient(top, '.$color1.', '.$color2.');
background-image: -o-linear-gradient(top, '.$color1.', '.$color2.');
background-image: linear-gradient(to bottom, '.$color1.', '.$color2.');
-webkit-border-radius: 10;
-moz-border-radius: 10;
border-radius: 10px;
border: solid #999 1px;
text-decoration: none;
"></div>';
$htmlstr .= ' <tr>';
$htmlstr .= ' <td>'.$row->berechtigung_kurzbz.'</td>';
$htmlstr .= ' <td>'.($row->rolle_kurzbz != ''?$row->rolle_kurzbz:'').'</td>';
$htmlstr .= ' <td>'.($row->funktion_kurzbz != ''?$row->funktion_kurzbz:'').'</td>';
$htmlstr .= ' <td>'.($benutzer->nachname != ''?$benutzer->nachname:'').'</td>';
$htmlstr .= ' <td>'.($benutzer->vorname != ''?$benutzer->vorname:'').'</td>';
$htmlstr .= ' <td>'.($row->uid != ''?$row->uid:'').'</td>';
$htmlstr .= ' <td>'.$row->art.'</td>';
$htmlstr .= ' <td>'.(isset($row->uid)?$benutzer->bnaktiv?'Ja':'Nein':'').'</td>';
$htmlstr .= ' <td align="center">'.$status.'</td>';
if ($row->uid != '')
$htmlstr .= ' <td><a href="benutzerberechtigung_details.php?uid='.$row->uid.'" target="vilesci_detail">Benutzerrechte bearbeiten</a></td>';
elseif ($row->funktion_kurzbz != '')
$htmlstr .= ' <td><a href="benutzerberechtigung_details.php?funktion_kurzbz='.$row->funktion_kurzbz.'" target="vilesci_detail">Funktionsrechte bearbeiten</a></td>';
elseif ($row->rolle_kurzbz != '')
$htmlstr .= ' <td><a href="berechtigungrolle.php?rolle_kurzbz='.$row->rolle_kurzbz.'" target="vilesci_detail">Rollenrechte bearbeiten</a></td>';
$htmlstr .= ' </tr>';
$htmlstr .= '</tbody></table>';
}
else
{
$htmlstr .= "Für diese Berechtigung sind keine Einträge vorhanden";
}
$htmlstr .= '</tbody></table>';
}
else
{
$htmlstr .= "Für diese Berechtigung sind keine Einträge vorhanden";
else
{
$berechtigungen_array = array();
$berechtigungen->getBenutzerFromBerechtigung($berechtigung_kurzbz);
if (isset($berechtigungen->result) && count($berechtigungen->result) != 0)
{
foreach ($berechtigungen->result as $row)
{
if ($row->uid != '')
{
$berechtigungen_array[] = array('uid' => $row->uid,
'art' => $row->art,
'start' => $row->start,
'ende' => $row->ende,
'oe_kurzbz' => $row->oe_kurzbz,
'rolle_kurzbz' => '',
'funktion_kurzbz' => '');
}
if ($row->rolle_kurzbz != '')
{
$user_rolleberechtigung = new benutzerberechtigung();
$user_rolleberechtigung->getBenutzerFromRolle($row->rolle_kurzbz);
foreach ($user_rolleberechtigung->result as $row_rolle)
{
$berechtigungen_array[] = array('uid' => $row_rolle->uid,
'art' => $row_rolle->art,
'start' => $row_rolle->start,
'ende' => $row_rolle->ende,
'oe_kurzbz' => $row_rolle->oe_kurzbz,
'rolle_kurzbz' => $row_rolle->rolle_kurzbz,
'funktion_kurzbz' => $row->funktion_kurzbz);
}
}
if ($row->funktion_kurzbz != '')
{
$user_funktion = new benutzerfunktion();
$user_funktion->getBenutzerFunktionen($row->funktion_kurzbz);
foreach ($user_funktion->result as $row_funktion)
{
$berechtigungen_array[] = array('uid' => $row_funktion->uid,
'art' => $row->art,
'start' => $row->start,
'ende' => $row->ende,
'oe_kurzbz' => $row_funktion->oe_kurzbz,
'rolle_kurzbz' => '',
'funktion_kurzbz' => $row->funktion_kurzbz);
}
}
}
// var_dump($berechtigungen_array);exit;
// Benutzer der Rolle auflösen
foreach ($berechtigungen->result as $row)
{
$user_rolleberechtigung = new benutzerberechtigung();
$user_rolleberechtigung->getBenutzerFromRolle($row->rolle_kurzbz);
}
$htmlstr .= "<h3>".$berechtigung_kurzbz."</h3>\n";
$htmlstr .= "<div style='font-size: 9pt'>".count($berechtigungen_array)." Einträge</div>";
$htmlstr .= "<div style='font-size: 9pt'>".count(array_unique(array_column($berechtigungen_array, 'uid')))." UIDs</div>";
$htmlstr .= "<table id='t2' class='tablesorter'><thead><tr>\n";
$htmlstr .= " <th>Nachname</th>
<th>Vorname</th>
<th>UID</th>
<th>Art</th>
<th>OE_Kurzbz</th>
<th>Rolle</th>
<th>Funktion</th>
<th>Benutzer Aktiv</th>
<th>Status</th>
<th>Aktion</th>";
$htmlstr .= "</tr></thead><tbody>\n";
foreach ($berechtigungen_array as $key => $row)
{
$benutzer = new benutzer();
$benutzer->load($row['uid']);
$organisationseinheit = new organisationseinheit($row['oe_kurzbz']);
$heute = strtotime(date('Y-m-d'));
if ($row['ende'] != '' && strtotime($row['ende']) < $heute)
{
$status = '<div class="buttonRed"></div>';
}
elseif ($row['start'] != '' && strtotime($row['start']) > $heute)
{
$status = '<div class="buttonYellow"></div>';
}
else
{
$status = '<div class="buttonGreen"></div>';
}
$htmlstr .= ' <tr>';
$htmlstr .= ' <td>' . ($benutzer->nachname != '' ? $benutzer->nachname : '') . '</td>';
$htmlstr .= ' <td>' . ($benutzer->vorname != '' ? $benutzer->vorname : '') . '</td>';
$htmlstr .= ' <td>' . ($row['uid'] != '' ? $row['uid'] : '') . '</td>';
$htmlstr .= ' <td>' . $row['art'] . '</td>';
$htmlstr .= ' <td>' . $organisationseinheit->organisationseinheittyp_kurzbz . ' ' .$organisationseinheit->bezeichnung . '</td>';
$htmlstr .= ' <td>' . $row['rolle_kurzbz'] . '</td>';
$htmlstr .= ' <td>' . $row['funktion_kurzbz'] . '</td>';
$htmlstr .= ' <td>' . (isset($row['uid']) ? $benutzer->bnaktiv ? 'Ja' : 'Nein' : '') . '</td>';
$htmlstr .= ' <td align="center">' . $status . '</td>';
$htmlstr .= ' <td><a href="benutzerberechtigung_details.php?uid=' . $row['uid'] . '" target="vilesci_detail">Benutzerrechte bearbeiten</a></td>';
$htmlstr .= ' </tr>';
}
$htmlstr .= '</tbody></table>';
}
else
{
$htmlstr .= "Für diese Berechtigung sind keine Einträge vorhanden";
}
}
}