Verified Commit 66145357 authored by Thorsten Küfer's avatar Thorsten Küfer

Merge branch

parents 4aaa9638 e175c38e
......@@ -604,7 +604,30 @@
error_log("[SecDoc] DBCon.class.php -> Aktualisiere Datenbank von Version $db_version zu " . self::DBVERSION . "!");
$this->pdo->beginTransaction();
# Neue Tabelle für angehängte Dokumente
$this->pdo->exec(self::TABLES[17]);
# Alte TOMs auf 'unbearbeitet' setzen, wenn nicht umgesetzt und kein Kommentar hinterlegt
$sth1 = $this->pdo->prepare('SELECT ID, JSON FROM verfahren WHERE NOT Status = 3;');
$sth2 = $this->pdo->prepare('UPDATE verfahren SET JSON = ? WHERE ID = ?;');
$sth1->execute();
foreach($sth1->fetchAll() as $entry) {
$parsedJSON = json_decode($entry['JSON'], true);
$tomKeys = array_filter(array_keys($parsedJSON), function($key) { return strpos($key, 'massnahmen_') === 0; });
foreach($tomKeys as $key) {
if(strpos($key, '_kommentar') !== FALSE || in_array($key, ['massnahmen_risiko', 'massnahmen_abhaengigkeit_id', 'massnahmen_abhaengigkeit_name', 'massnahmen_vertraulichkeit', 'massnahmen_integritaet', 'massnahmen_verfuegbarkeit'])) continue;
if($parsedJSON[$key] !== '0') continue;
if($parsedJSON[$key] === '0' && (!array_key_exists($key . '_kommentar', $parsedJSON) || empty($parsedJSON[$key . '_kommentar']))) {
$parsedJSON[$key] = '-1';
}
}
$sth2->execute([json_encode($parsedJSON), $entry['ID']]);
}
$this->pdo->exec("PRAGMA user_version = 11;");
$this->pdo->commit();
}
......
......@@ -8,7 +8,7 @@
<li>die beteiligten technischen Systeme und Dienste (Hardware, Software und Infrastruktur),</li>
<li>die technischen, organisatorischen und personellen Prozesse der Verarbeitung von Daten.</li>
</ol>
Der Ausdruck „Prozess“ ist in der DS-GVO nicht ausdrücklich enthalten. Jede Verarbeitungstätigkeit kann jedoch als Geschäftsprozess bzw. Fachverfahren modelliert werden. Das SDM steht in einer engen Beziehung zur Grundschutzmethodik des Bundesamtes für Sicherheit in der Informationstechnik (BSI). Um die Anwendung des SDM zu erleichtern, nutzt die SDM-Methodik vergleichbare Modellierungsmechanismen wie die Grundschutzmethodik. BSI-Grundschutz und SDM ergänzen sich somit in idealer Weise und liefern gemeinsam die Informationen, die erforderlich sind, um die Einhaltung der Grundsätze für die Verarbeitung personenbezogener Daten nachweisen zu können." class="fa fa-question-circle-o fa-lg"></i> und wurde von der <abbr title="Konferenz der Datenschutzbehörden des Bundes und der Länder">DSK</abbr> auf ihrer Sitzung am 17.04.2020 verabschiedet.
Der Ausdruck „Prozess“ ist in der DS-GVO nicht ausdrücklich enthalten. Jede Verarbeitungstätigkeit kann jedoch als Geschäftsprozess bzw. Fachverfahren modelliert werden. Das SDM steht in einer engen Beziehung zur Grundschutzmethodik des Bundesamtes für Sicherheit in der Informationstechnik (BSI). Um die Anwendung des SDM zu erleichtern, nutzt die SDM-Methodik vergleichbare Modellierungsmechanismen wie die Grundschutzmethodik. BSI-Grundschutz und SDM ergänzen sich somit in idealer Weise und liefern gemeinsam die Informationen, die erforderlich sind, um die Einhaltung der Grundsätze für die Verarbeitung personenbezogener Daten nachweisen zu können." class="fa fa-question-circle-o"></i> und wurde von der <abbr title="Konferenz der Datenschutzbehörden des Bundes und der Länder">DSK</abbr> auf ihrer Sitzung am 17.04.2020 verabschiedet.
</p>
<hr>
<h5 class="text-center">Bitte wählen Sie eine Ebene aus</h5>
......
This diff is collapsed.
This diff is collapsed.
......@@ -136,6 +136,9 @@ Art. 25 DSGVO Datenschutz durch Technikgestaltung und durch datenschutzfreundlic
<div class="col-sm-offset-1 col-sm-10">
<h6 class="info-text text-ul-dot printHide">2. Sicherheitsmaßnahmen angeben</h6>
<p class="printHide">Klicken Sie auf die Bausteine, um die jeweiligen Anforderungen anzuzeigen und den Umsetzungsstand sowie die Sicherheitsmaßnahmen anzugeben.</p>
<div class="checkbox text-center printHide">
<label><input type="checkbox" id="hideFinishedTOMs" value="1" /> <strong>Bereits bearbeitete Massnahmen ausblenden</strong> <i data-toggle="tooltip" title="Neu bearbeitete Massnahmen werden erst beim nächsten Laden oder bei einem erneuten Ein- und Ausblenden beachtet." class="fa fa-question-circle-o fa-lg"></i></label>
</div>
<div class="panel-group" id="tom_accordion" role="tablist" aria-multiselectable="true">
</div>
</div>
......@@ -198,7 +201,7 @@ Art. 25 DSGVO Datenschutz durch Technikgestaltung und durch datenschutzfreundlic
<div class="col-sm-12">
<h5 class="info-text text-ul">Abschluss</h5>
</div>
<div class="col-sm-offset-1 col-sm-10 printHide">
<h6 class="info-text text-ul-dot">Angehängte Dokumente</h6>
<p>Hier können Sie bereits vorhandene Dokumente wie z.B. Betriebskonzept, Risikoanalyse, Netzplan etc. im PDF-Format zur Dokumentation in SecDoc hinterlegen.</p>
......
This diff is collapsed.
......@@ -1002,6 +1002,9 @@ function copyFromServer(id) {
function genHTMLforPDF(draft = false) {
console.time('HTML-Code-Generierung für PDF-Datei');
/* Bearbeitete TOMs wieder einblenden */
$('#hideFinishedTOMs:checked').prop('checked', false).trigger('change');
/* Alle leeren Tabellenzeilen entfernen */
endlessTables.forEach(function(table) {
removeTableRows(table, true);
......@@ -1042,7 +1045,9 @@ function genHTMLforPDF(draft = false) {
if(draft) {
toSend.find('#tom_accordion').find('option').each(function() {
let selectName = $(this).closest('select')[0].name;
let selectedValue = $('select[name="' + selectName + '"]').val();
let selectedValue = $('select[name="' + selectName + '"]').val(); // .val() funktioniert in Kopie nicht richtig, deswegen Abfrage im Live-DOM
if(this.value === '-1') return;
if(this.value === selectedValue) {
$(this).closest('td').append('<p>&#9746; ' + this.text + '</p>');
......@@ -1060,11 +1065,28 @@ function genHTMLforPDF(draft = false) {
if(parseInt($(this).data('risk')) > currRiskLevel) $(this).remove();
});
/* Ausgeblendete, bearbeitete TOMs wieder anzeigen */
toSend.find('#tom_accordion tr.hidden').removeClass('hidden');
toSend.find('#hideFinishedTOMs').closest('div').remove();
/* Bei Abschluss-PDF unbearbeitete Massnahmen entfernen */
if(!draft) toSend.find('#tom_accordion select').each(function() {
if($('select[name="' + this.name + '"]').val() === '-1') $(this).closest('tr').remove();
});
/* Bei Abschluss-PDF Volltexte entfernen */
if(!draft) toSend.find('#tom_accordion').find('tbody td:nth-child(2) div.tom_desc').remove();
if(!draft) toSend.find('#tom_accordion').find('tbody td:nth-child(2) p').removeClass('strong');
if(!draft) toSend.find('#tom_accordion').find('.panel-body > p, .panel-body > a').remove();
/* Leere TOM-Kategorien entfernen */
if(!draft) toSend.find('#tom_accordion table').each(function() {
if($(this).find('tbody tr').length === 0) {
$(this).closest('.panel-collapse').prev('h6').remove();
$(this).closest('.panel-collapse').remove();
}
});
/* Hinweis-Text bei keinen ausgewählten TOMs */
if(toSend.find('#toggletoms').find('input[type=checkbox]:checked').length === 0 || toSend.find('#tom_accordion').find('tr').length === 0) {
toSend.find('#tom_accordion').append('<h5 class="text-center"><strong>Es wurden keine Technischen und Organisatorischen Maßnahmen ausgewählt.</strong></h5>');
......@@ -1810,10 +1832,11 @@ function generateTOMList() {
/**
* Filtert die Liste der TOMs anhand des gewählten Risikolevels
* @param {Number} risklevel Risikolevel des Verfahrens
* @param {Number} risklevel Risikolevel des Verfahrens
* @param {Boolean} hideFinished (optional) Bearbeitete Massnahmen ausblenden
* @return {undefined}
*/
function filterTOMList(risklevel) {
function filterTOMList(risklevel, hideFinished = false) {
let riskTexts = {
'1': 'Der Schutzbedarf ' + (modeNum === 2 ? 'des ' + modeName[0] + 's' : 'der ' + modeName[0]) + ' ist <em>niedrig</em>. Es sind die <em>Basis</em>-Anforderungen umzusetzen, sofern nicht gravierende Gründe dagegen sprechen.',
'2': 'Der Schutzbedarf ' + (modeNum === 2 ? 'des ' + modeName[0] + 's' : 'der ' + modeName[0]) + ' ist <em>normal</em>. Es sind die <em>Basis</em>- sowie die <em>Standard</em>-Anforderungen umzusetzen, sofern sie nicht durch mindestens gleichwertige Alternativen oder die bewusste Akzeptanz des Restrisikos ersetzt werden.',
......@@ -1829,6 +1852,8 @@ function filterTOMList(risklevel) {
let tomRisklevel = parseInt($(this).data('risk'));
if(tomRisklevel <= risklevel) $(this).removeClass('hidden');
if(tomRisklevel > risklevel) $(this).addClass('hidden');
if(hideFinished && $(this).find('select').val() !== '-1') $(this).addClass('hidden');
});
$('#tom_accordion').find('div.panel').each((idx, elem) => {
......@@ -1906,8 +1931,9 @@ function toggleTOMList(evt) {
// Umsetzung
let tomDropdown = $('<select data-tool="selectpicker" name="massnahmen_' + tomID + '"></select>')
.append('<option value="-1" selected>Unbearbeitet</option>')
.append('<option value="1">Ja</option>')
.append('<option value="0" selected>Nein</option>')
.append('<option value="0">Nein</option>')
.append('<option value="2">Teilweise</option>')
.append('<option value="4">Entbehrlich</option>');
......@@ -2441,6 +2467,15 @@ Promise.all(promises).then(function() {
filterTOMList(parseInt($(this).val()));
});
$('#hideFinishedTOMs').change(function() {
if(this.checked) {
filterTOMList(parseInt($('[name=massnahmen_risiko]:checked').val()), true);
}
else {
filterTOMList(parseInt($('[name=massnahmen_risiko]:checked').val()));
}
});
console.timeEnd('Dynamische Inhalte initialisieren');
/*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment