Rechte in Rollen kopieren

This commit is contained in:
kindlm
2024-01-31 16:02:29 +01:00
parent 363ec9aa2f
commit 1b3c509ee8
2 changed files with 352 additions and 47 deletions
@@ -317,6 +317,88 @@ if(isset($_POST['setDate_multi']) && $_POST['setDate_multi'] != '')
//$reloadstr .= "<script type='text/javascript'>";
//$reloadstr .= " parent.uebersicht.location.href='benutzerberechtigung_uebersicht.php';";
//$reloadstr .= "</script>";
}
if(isset($_POST['save_anmerkung_multi']) && $_POST['anmerkung_multi'] != '')
{
if(!$rechte->isBerechtigt('basis/berechtigung', null, 'su'))
die($rechte->errormsg);
$anmerkungNeu = $_POST['anmerkung_multi'];
if (isset($_POST['dataset']))
{
$i = 0;
foreach ($_POST['dataset'] AS $benutzerberechtigung_id => $value)
{
// Nur markierte Einträge bearbeiten
if (!isset($value['check']))
{
continue;
}
$ber = new benutzerberechtigung();
if(!$ber->load($benutzerberechtigung_id))
{
die('Fehler beim Laden der Berechtigung');
}
// Bestehende Anmerkungen belassen und neue Ergänzen
if ($ber->anmerkung != '')
{
$ber->anmerkung = $ber->anmerkung.'; '.$anmerkungNeu;
}
else
{
$ber->anmerkung = $anmerkungNeu;
}
// Wenn Anmerkung länger als 256 Zeichen ist (DB-Beschränkung), String kürzen und Warnung ausgeben
if (strlen($ber->anmerkung) > 256)
{
$ber->anmerkung = cutString($ber->anmerkung, 256, '...');
$errorstr .= "<span style='color: red'><b>Die Anmerkung bei der ID ".$benutzerberechtigung_id." übersteigt die maximale Länge von 256 Zeichen und wurde nicht vollständig gespeichert</b></span><br>";
}
$ber->updateamum = date('Y-m-d H:i:s');
$ber->updatevon = $user;
if(!$ber->save())
{
$errorstr .= "Die Anmerkung des Datensatzes mit der ID ".$benutzerberechtigung_id." konnte nicht gespeichert werden!".$ber->errormsg;
}
else
{
$i ++;
//Log schreiben
$log = new log();
$logdata = var_export((array) $ber, true);
$log->new = true;
$log->sql = $logdata;
$log->sqlundo = 'Kein Undo vorhanden';
$log->executetime = date('Y-m-d H:i:s');
$log->mitarbeiter_uid = $user;
$log->beschreibung = 'Anmerkung bearbeitet';
if(!$log->save())
{
$errorstr .= "<span style='color: red'><b>Fehler beim schreiben des Log-Eintrags</b></span><br>";
}
}
}
if ($i > 0)
{
$successstr .= "<span style='color: green'><b>Anmerkung bei ".$i." Einträgen erfolgreich gespeichert</b></span><br>";
}
}
//$reloadstr .= "<script type='text/javascript'>";
//$reloadstr .= " parent.uebersicht.location.href='benutzerberechtigung_uebersicht.php';";
//$reloadstr .= "</script>";
@@ -424,6 +506,10 @@ if(isset($_POST['schick']))
}
}
}
if ($errorstr == '')
{
$successstr .= "<span style='color: green'><b>Änderungen erfolgreich gespeichert</b></span><br>";
}
}
}
else
@@ -539,20 +625,23 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$htmlstr .= "Berechtigungen von <b>".$name->nachname." ".$name->vorname." (".$uid.")</b>";
$message = '';
$class = '';
$messageString = '';
if ($errorstr != '' || $successstr != '')
{
if ($successstr != '')
{
$class = 'class="alert alert-success"';
$message = $successstr;
$messageString .= ' <div '.$class.'>'.$message.'</div>';
}
elseif ($errorstr != '')
if ($errorstr != '')
{
$class = 'class="alert alert-danger"';
$message = $errorstr;
$messageString .= ' <div '.$class.'>'.$message.'</div>';
}
}
$htmlstr .= ' <div id="msgbox" '.$class.'>'.$message.'</div>';
$htmlstr .= ' <div id="msgbox">'.$messageString.'</div>';
$i = 0;
@@ -643,8 +732,9 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
</tr></thead><tbody>";
$htmlstr .= "<tr id='neu'>";
$htmlstr .= "<form action='benutzerberechtigung_details.php?uid=".$uid."&funktion_kurzbz=".$funktion_kurzbz."' method='POST' name='berechtigung_neu'>";
$htmlstr .= "<form id='formNeuesRecht' action='benutzerberechtigung_details.php?uid=".$uid."&funktion_kurzbz=".$funktion_kurzbz."' method='POST' name='berechtigung_neu'>";
$htmlstr .= "<input type='hidden' name='neu' value='1'>";
$htmlstr .= "<input type='hidden' name='schick' value='1'>";
$htmlstr .= "<input type='hidden' name='benutzerberechtigung_id' value=''>";
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>";
$htmlstr .= "<input type='hidden' name='funktion_kurzbz' value='".$funktion_kurzbz."'>";
@@ -716,7 +806,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
//Anmerkung
$htmlstr .= " <td><input id='anmerkung_neu' type='text' name='dataset[0][anmerkung]' value='' size='100' maxlength='256'></td>";
$htmlstr .= " <td><input type='submit' name='schick' value='Neu anlegen' onclick='return validateNewData()'></td>";
//$htmlstr .= " <td><input type='submit' name='schick' value='Neu anlegen' onclick='return validateNewData()'></td>";
$htmlstr .= "</form>";
$htmlstr .= " </tr></tbody></table>";
@@ -727,7 +817,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
////////////////
$htmlstr .= "<p style='font-size: small' id='anzahl'></p>";
$htmlstr .= "<form action='benutzerberechtigung_details.php?uid=".$uid."&funktion_kurzbz=".$funktion_kurzbz."' method='POST'>";
$htmlstr .= "<form id='formRechte' action='benutzerberechtigung_details.php?uid=".$uid."&funktion_kurzbz=".$funktion_kurzbz."' method='POST'>";
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>";
$htmlstr .= "<input type='hidden' name='funktion_kurzbz' value='".$funktion_kurzbz."'>";
@@ -775,7 +865,6 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
default: break;
}
$htmlstr .= " <tr class='row_berechtigung' id='".$b->benutzerberechtigung_id."'>";
$heute = strtotime(date('Y-m-d'));
if ($b->ende!='' && strtotime($b->ende) < $heute)
{
@@ -798,6 +887,16 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$inaktiv_class = '';
$data = 'gruen';
}
// Inaktive Elemente sowie WaWi-Rechte ausblenden
if ($b->ende!='' && strtotime($b->ende) < $heute || $b->rolle_kurzbz == 'wawi' || substr($b->berechtigung_kurzbz, 0, 4) == 'wawi')
{
$htmlstr .= " <tr class='row_berechtigung ausgeblendet' id='".$b->benutzerberechtigung_id."'>";
}
else
{
$htmlstr .= " <tr class='row_berechtigung' id='".$b->benutzerberechtigung_id."'>";
}
// Auswahlcheckbox
$htmlstr .= " <td $style class='auswahlcheckboxen' name='td_$b->benutzerberechtigung_id' data-".$data."='".$data."'>";
$htmlstr .= " <span style='display: none'>".$titel."</span>";
@@ -960,10 +1059,15 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$htmlstr .= " </tr>";
}
$htmlstr .= "</tbody></table>";
//Button zum einblenden ausgeblendeter Zeilen
$htmlstr .= "<button type='button' class='btn btn-default' onclick='show_hidden()'>Inaktive und WaWi anzeigen</button>";
$htmlstr .= '<div id="bottomArea" >
<div class="input-group">
<button type="submit" class="btn btn-default" name="schick" onclick="return validateSpeichern()" style="margin-bottom: 10px">Speichern</button>
<div class="form-inline" style="">
<button id="ButtonNeu" type="button" class="btn btn-default" name="schick" onclick="return submitNeuesRecht()" style="margin-bottom: 10px">Neues Recht speichern</button>
<button id="ButtonSpeichern" type="submit" class="btn btn-default" name="schick" onclick="return validateSpeichern()" style="margin-bottom: 10px">Änderungen Speichern</button>
<div class="form-inline multi-options" style="">
<div class="input-group" style="width: 180px;">
<input type="text" id="input_uebertragen_nach" name="uebertragen_nach" class="form-control benutzer_autocomplete" placeholder="Zu UID übertragen">
<div class="input-group-btn">
@@ -975,6 +1079,16 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
<button type="submit" id="button_mehrfachbeenden" name="setDate_multi" value="setDate_multi" class="btn btn-default" onclick="return validateBeenden()">Ende setzen</button>
<button type="submit" id="button_mehrfachloeschen" name="delete_multi" value="delete_multi" class="btn btn-warning" onclick="return validateDeleteMulti()">Markierte löschen</button>
</div>
<div class="form-inline multi-options" style="">
<div class="input-group" style="width: 180px;">
<input type="text" id="input_anmerkung_multi" maxlength="256" name="anmerkung_multi" class="form-control" placeholder="Mehrfach-Anmerkung" style="width: 390px;">
<div class="input-group-btn">
<button class="btn btn-default" type="submit" id="button_anmerkung_multi" name="save_anmerkung_multi" onclick="return validateAnmerkungMulti()">
<i class="glyphicon glyphicon-ok" style="line-height: unset"></i>
</button>
</div>
</div>
</div>
</div>
</div>';
$htmlstr .= "</form>";
@@ -1268,6 +1382,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
/*border-right: 1px solid #999;*/
margin-left: auto;
display: block ruby;
border-top-left-radius: 4px;
}
#msgbox
{
@@ -1306,6 +1421,14 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
{
background-color: #f3f3f3 !important;
}
.ausgeblendet
{
display: none;
}
.multi-options
{
display: none;
}
</style>
<script type="text/javascript">
$(document).ready(function()
@@ -1499,17 +1622,70 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
var aktiv = $('td.auswahlcheckboxen[data-gruen]').length + $('td.auswahlcheckboxen[data-gelb]').length;
var inaktiv = $('td.auswahlcheckboxen[data-rot]').length;
$("#anzahl").html(aktiv + inaktiv + " Einträge (" + aktiv + " Aktive, " + inaktiv + " Inaktive)");
$("#anzahl").html(aktiv + inaktiv + " Einträge (" + aktiv + " Aktive, " + inaktiv + " Inaktive (ausgeblendet))");
/*$('.checkbox').each(function ()
{
$("#t1").checkboxes('range', true);
});*/
$("#uncheck_t1").on('click', function(e) {
$(".auswahlcheckboxen").checkboxes('uncheck');
e.preventDefault();
});
$("#uncheck_t1").on('click', function(e)
{
$(".auswahlcheckboxen").checkboxes('uncheck');
e.preventDefault();
});
// Wenn eine Auswahlcheckbox angeklickt wird, Zusatzoptionen anzeigen
$(".auswahlcheckbox").change(function() {
if ($(".auswahlcheckbox:checked").length > 0)
{
// Zeige den Bereich an, wenn mindestens eine Checkbox ausgewählt ist
$(".multi-options").show();
}
else
{
// Verberge den Bereich, wenn keine Checkbox ausgewählt ist
$(".multi-options").hide();
}
});
// Wenn etwas ins Neu-Formular eingegeben wird, nur den Neu-Speicherbutton aktivieren, sonst den anderen
$("#neu :input").on( "input", function() {
var filled = false;
$("#formNeuesRecht :input").each(function() {
if ($(this).val().trim() !== '') {
filled = true;
return false; // Brechen Sie die each-Schleife ab, wenn ein gefülltes Feld gefunden wurde
}
});
// Aktualisieren Sie den Status des Buttons basierend auf den Änderungen in den Feldern
$("#ButtonSpeichern").prop("disabled", !filled);
$("#ButtonNeu").prop("disabled", filled);
// Aktualisieren Sie die Variable, um den Status zu speichern
isButtonDisabled = !filled;
});
// Wenn etwas ins Rechte-Formular eingegeben wird, nur den Speicherbutton aktivieren, sonst den anderen
$("#formRechte :input").on( "input", function() {
var filled = false;
$("#formNeuesRecht :input").each(function() {
if ($(this).val().trim() !== '') {
filled = true;
return false; // Brechen Sie die each-Schleife ab, wenn ein gefülltes Feld gefunden wurde
}
});
// Aktualisieren Sie den Status des Buttons basierend auf den Änderungen in den Feldern
$("#ButtonNeu").prop("disabled", !filled);
$("#ButtonSpeichern").prop("disabled", filled);
// Aktualisieren Sie die Variable, um den Status zu speichern
isButtonDisabled = !filled;
});
//if (typeof $("#filterTableDataset").checkboxes === 'function')
// $("#filterTableDataset").checkboxes("range", true);
@@ -1539,6 +1715,22 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
return true;
}
function validateAnmerkungMulti()
{
if($('input.auswahlcheckbox:checked').length == 0)
{
alert('Bitte mindestens eine Berechtigung auswählen');
return false;
}
else if($('#input_anmerkung_multi').val() == '')
{
alert('Bitte Text eingeben, der als Anmerkung hinzugefügt werden soll');
return false;
}
else
return true;
}
function validateBeenden()
{
if($('input.auswahlcheckbox:checked').length == 0)
@@ -1584,18 +1776,17 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
}
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++)
var eingabe = $('#art_neu').val().toLowerCase();
var erlaubt = ['s', 'su', 'sui', 'suid'];
if (erlaubt.includes(eingabe))
{
d = eingabe.charAt(c);
if (erlaubt.indexOf(d) == -1)
{
alert ('Erlaubte Werte für Art sind s,u,i,d');
return false;
}
return true;
}
else
{
alert('Erlaubte Werte für Art sind s, su, sui, suid');
return false;
}
}
else
@@ -1697,7 +1888,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
function validateArt(id)
{
var eingabe, c, erlaubt = 'suid', laenge;
eingabe = document.getElementById(id).value;;
eingabe = document.getElementById(id).value;
eingabe = eingabe.toLowerCase();
laenge = eingabe.length;
if (eingabe == '')
@@ -1718,6 +1909,22 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
document.getElementById(id).style.border = "";
}
}
function show_hidden()
{
$("tr.ausgeblendet:hidden").each(function()
{
$(this).fadeIn(1000);
});
}
function submitNeuesRecht()
{
if (validateNewData())
{
var form = document.getElementById("formNeuesRecht");
form.submit();
}
}
</script>
</head>
<body style="background-color:#eeeeee;">
+120 -22
View File
@@ -32,10 +32,11 @@ $rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/berechtigung'))
die('Sie habe keine Rechte um diese Seite anzuzeigen');
//echo '<pre>', var_dump($_POST), '</pre>';exit();
$rolle_kurzbz = filter_input(INPUT_GET, 'rolle_kurzbz');
$delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
$copy = filter_input(INPUT_POST, 'copy');
$saveRecht = isset($_POST['action']) && $_POST['action'] == 'saveRechtAjax' ? true : false;
$vergleich = filter_input(INPUT_GET, 'vergleich');
?>
<html>
@@ -157,13 +158,87 @@ $vergleich = filter_input(INPUT_GET, 'vergleich');
else
return true;
}
function saveRecht(rolle_kurzbz, recht, art)
{
data = {
action: 'saveRechtAjax',
rolle_ajax: rolle_kurzbz,
recht_ajax: recht,
art_ajax: art
};
$.ajax({
url: 'berechtigungrolle.php',
data: data,
type: 'POST',
dataType: "json",
success: function(data)
{
if(data.status!='ok')
{
//error
console.log('error');
}
else
{
html = '<td style=""></td><td style="">'+recht+'</td><td style="text-align: right;">'+art+'</td>';
console.log('#'+rolle_kurzbz+'_'+recht);
$('#'+rolle_kurzbz+'_'+recht).html(html);
}
},
error: function(data)
{
//error
console.log('error2');
}
});
}
</script>
<style>
button
{
line-height: 9pt;
}
</style>
</head>
<body class="background_main">
<?php
if($saveRecht)
{
$rolle_kurzbz = filter_input(INPUT_POST, 'rolle_ajax');
$recht = filter_input(INPUT_POST, 'recht_ajax');
$art = filter_input(INPUT_POST, 'art_ajax');
$berechtigung = new berechtigung();
$berechtigung->rolle_kurzbz = $rolle_kurzbz;
$berechtigung->berechtigung_kurzbz = $recht;
$berechtigung->art = $art;
$berechtigung->insertamum = date('Y-m-d H:i:s');
$berechtigung->insertvon = $user;
if($berechtigung->saveRolleBerechtigung())
{
echo json_encode(array(
'status' => 'ok',
'msg' => ''
));
exit();
}
else
{
echo json_encode(array(
'status' => 'error',
'msg' => 'Fehler beim Speichern der Rolle'
));
exit();
}
}
if(isset($rolle_kurzbz))
{
echo '<h2>Berechtigungen der Rolle "'.$rolle_kurzbz.'"</h2>';
@@ -335,35 +410,46 @@ $vergleich = filter_input(INPUT_GET, 'vergleich');
<tr>
<th>Kurzbz</th>
<th>Art</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>';
foreach ($rollenGesamt AS $recht => $art)
{
if (array_key_exists($recht, $rollen1Arr))
if (array_key_exists($recht, $rollen1Arr) || !array_key_exists($recht, $rollen2Arr))
{
if ($art != $rollen1Arr[$recht])
{
echo ' <tr>
<td style="border: 1px solid transparent">'.$recht.'</td>
<td style="border: 1px solid black">'.$rollen1Arr[$recht].'</td>
echo ' <tr id="'.$rolle1.'_'.$recht.'">
<td style="">'.$recht.'</td>
<td style="background-color: #a5a5a5">'.$rollen1Arr[$recht].'</td>
<td style="text-align: right;"><button type="button" onclick="saveRecht(\''.$rolle2.'\', \''.$recht.'\', \''.$rollen1Arr[$recht].'\')"> -> </button></td>
</tr>';
}
elseif (!array_key_exists($recht, $rollen2Arr))
{
echo ' <tr id="'.$rolle1.'_'.$recht.'">
<td style="">'.$recht.'</td>
<td style="">'.$art.'</td>
<td style="text-align: right;"><button type="button" onclick="saveRecht(\''.$rolle2.'\', \''.$recht.'\', \''.$rollen1Arr[$recht].'\')"> -> </button></td>
</tr>';
}
else
{
echo ' <tr>
<td style="border: 1px solid transparent">'.$recht.'</td>
<td style="border: 1px solid transparent">'.$art.'</td>
echo ' <tr id="'.$rolle1.'_'.$recht.'">
<td style="">'.$recht.'</td>
<td style="">'.$art.'</td>
<td style="text-align: right;"></td>
</tr>';
}
}
else
{
echo ' <tr>
<td style="border: 1px solid black; border-right: 0">&nbsp;</td>
<td style="border: 1px solid black; border-left: 0">&nbsp;</td>
echo ' <tr id="'.$rolle1.'_'.$recht.'">
<td style="background-color: #a5a5a5; ">&nbsp;</td>
<td style="background-color: #a5a5a5;">&nbsp;</td>
<td style="background-color: #a5a5a5; text-align: right;"></td>
</tr>';
}
}
@@ -395,6 +481,7 @@ $vergleich = filter_input(INPUT_GET, 'vergleich');
echo ' <table id="t4" class="tablesorter">
<thead>
<tr>
<th>&nbsp;</th>
<th>Kurzbz</th>
<th>Art</th>
</tr>
@@ -402,28 +489,39 @@ $vergleich = filter_input(INPUT_GET, 'vergleich');
<tbody>';
foreach ($rollenGesamt AS $recht => $art)
{
if (array_key_exists($recht, $rollen2Arr))
if (array_key_exists($recht, $rollen2Arr) || !array_key_exists($recht, $rollen1Arr))
{
if ($art != $rollen2Arr[$recht])
{
echo ' <tr>
<td style="border: 1px solid transparent">'.$recht.'</td>
<td style="border: 1px solid black">'.$rollen2Arr[$recht].'</td>
echo ' <tr id="'.$rolle2.'_'.$recht.'">
<td style="text-align: left;"><button type="button" onclick="saveRecht(\''.$rolle1.'\', \''.$recht.'\', \''.$rollen2Arr[$recht].'\')"> <- </button></td>
<td style="">'.$recht.'</td>
<td style="background-color: #a5a5a5;">'.$rollen2Arr[$recht].'</td>
</tr>';
}
elseif (!array_key_exists($recht, $rollen1Arr))
{
echo ' <tr id="'.$rolle2.'_'.$recht.'">
<td style="text-align: left;"><button type="button" onclick="saveRecht(\''.$rolle1.'\', \''.$recht.'\', \''.$rollen2Arr[$recht].'\')"> <- </button></td>
<td style="">'.$recht.'</td>
<td style="">'.$art.'</td>
</tr>';
}
else
{
echo ' <tr>
<td style="border: 1px solid transparent">'.$recht.'</td>
<td style="border: 1px solid transparent">'.$art.'</td>
echo ' <tr id="'.$rolle2.'_'.$recht.'">
<td style="">&nbsp;</td>
<td style="">'.$recht.'</td>
<td style="">'.$art.'</td>
</tr>';
}
}
else
{
echo ' <tr>
<td style="border: 1px solid black; border-right: 0">&nbsp;</td>
<td style="border: 1px solid black; border-left: 0">&nbsp;</td>
echo ' <tr id="'.$rolle2.'_'.$recht.'">
<td style="background-color: #a5a5a5;"></td>
<td style="background-color: #a5a5a5;">&nbsp;</td>
<td style="background-color: #a5a5a5;">&nbsp;</td>
</tr>';
}
}