From 1b3c509ee84d4046eeb89903ac68095aa0937603 Mon Sep 17 00:00:00 2001 From: kindlm Date: Wed, 31 Jan 2024 16:02:29 +0100 Subject: [PATCH] Rechte in Rollen kopieren --- .../benutzerberechtigung_details.php | 257 ++++++++++++++++-- vilesci/stammdaten/berechtigungrolle.php | 142 ++++++++-- 2 files changed, 352 insertions(+), 47 deletions(-) diff --git a/vilesci/stammdaten/benutzerberechtigung_details.php b/vilesci/stammdaten/benutzerberechtigung_details.php index b230d702f..62afdaa04 100644 --- a/vilesci/stammdaten/benutzerberechtigung_details.php +++ b/vilesci/stammdaten/benutzerberechtigung_details.php @@ -317,6 +317,88 @@ if(isset($_POST['setDate_multi']) && $_POST['setDate_multi'] != '') + //$reloadstr .= ""; + +} + +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 .= "Die Anmerkung bei der ID ".$benutzerberechtigung_id." übersteigt die maximale Länge von 256 Zeichen und wurde nicht vollständig gespeichert
"; + } + + $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 .= "Fehler beim schreiben des Log-Eintrags
"; + } + } + } + if ($i > 0) + { + $successstr .= "Anmerkung bei ".$i." Einträgen erfolgreich gespeichert
"; + } + } + + + //$reloadstr .= ""; @@ -424,6 +506,10 @@ if(isset($_POST['schick'])) } } } + if ($errorstr == '') + { + $successstr .= "Änderungen erfolgreich gespeichert
"; + } } } else @@ -539,20 +625,23 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) $htmlstr .= "Berechtigungen von ".$name->nachname." ".$name->vorname." (".$uid.")"; $message = ''; $class = ''; + $messageString = ''; if ($errorstr != '' || $successstr != '') { if ($successstr != '') { $class = 'class="alert alert-success"'; $message = $successstr; + $messageString .= '
'.$message.'
'; } - elseif ($errorstr != '') + if ($errorstr != '') { $class = 'class="alert alert-danger"'; $message = $errorstr; + $messageString .= '
'.$message.'
'; } } - $htmlstr .= '
'.$message.'
'; + $htmlstr .= '
'.$messageString.'
'; $i = 0; @@ -643,8 +732,9 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) "; $htmlstr .= ""; - $htmlstr .= "
"; + $htmlstr .= ""; $htmlstr .= ""; + $htmlstr .= ""; $htmlstr .= ""; $htmlstr .= ""; $htmlstr .= ""; @@ -716,7 +806,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) //Anmerkung $htmlstr .= " "; - $htmlstr .= " "; + //$htmlstr .= " "; $htmlstr .= "
"; $htmlstr .= " "; @@ -727,7 +817,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) //////////////// $htmlstr .= "

"; - $htmlstr .= "
"; + $htmlstr .= ""; $htmlstr .= ""; $htmlstr .= ""; @@ -775,7 +865,6 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) default: break; } - $htmlstr .= " "; $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 .= " "; + } + else + { + $htmlstr .= " "; + } + // Auswahlcheckbox $htmlstr .= " "; $htmlstr .= " ".$titel.""; @@ -960,10 +1059,15 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz'])) $htmlstr .= " "; } $htmlstr .= ""; + + //Button zum einblenden ausgeblendeter Zeilen + $htmlstr .= ""; + $htmlstr .= '
- -
+ + +
@@ -975,6 +1079,16 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
+
+
+ +
+ +
+
+
'; $htmlstr .= ""; @@ -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; + } diff --git a/vilesci/stammdaten/berechtigungrolle.php b/vilesci/stammdaten/berechtigungrolle.php index 7e87a4901..0ae4a3064 100644 --- a/vilesci/stammdaten/berechtigungrolle.php +++ b/vilesci/stammdaten/berechtigungrolle.php @@ -32,10 +32,11 @@ $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/berechtigung')) die('Sie habe keine Rechte um diese Seite anzuzeigen'); - +//echo '
', var_dump($_POST), '
';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'); ?> @@ -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 = ''+recht+''+art+''; + console.log('#'+rolle_kurzbz+'_'+recht); + $('#'+rolle_kurzbz+'_'+recht).html(html); + } + }, + error: function(data) + { + //error + console.log('error2'); + } + }); + } + 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 '

Berechtigungen der Rolle "'.$rolle_kurzbz.'"

'; @@ -335,35 +410,46 @@ $vergleich = filter_input(INPUT_GET, 'vergleich'); Kurzbz Art +   '; 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 ' - '.$recht.' - '.$rollen1Arr[$recht].' + echo ' + '.$recht.' + '.$rollen1Arr[$recht].' + + '; + } + elseif (!array_key_exists($recht, $rollen2Arr)) + { + echo ' + '.$recht.' + '.$art.' + '; } else { - echo ' - '.$recht.' - '.$art.' + echo ' + '.$recht.' + '.$art.' + '; } - } else { - echo ' -   -   + echo ' +   +   + '; } } @@ -395,6 +481,7 @@ $vergleich = filter_input(INPUT_GET, 'vergleich'); echo ' + @@ -402,28 +489,39 @@ $vergleich = filter_input(INPUT_GET, 'vergleich'); '; 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 ' - - + echo ' + + + + '; + } + elseif (!array_key_exists($recht, $rollen1Arr)) + { + echo ' + + + '; } else { - echo ' - - + echo ' + + + '; } } else { - echo ' - - + echo ' + + + '; } }
  Kurzbz Art
'.$recht.''.$rollen2Arr[$recht].'
'.$recht.''.$rollen2Arr[$recht].'
'.$recht.''.$art.'
'.$recht.''.$art.'
 '.$recht.''.$art.'