MRBS 1.12.2 等保2.0二级整改完整提交

包含:登录失败锁定、90天密码有效期、30分钟会话超时、
强制改密、登录审计日志、屏幕水印、企业背景图、
备案信息固定底部、favicon、JS空集合保护、
会话过期体验优化(403 JSON)、display_errors 关闭、
固定 key 根治 Integrity check failed 等全部改动

注意:config.inc.php/.htaccess/.user.ini 含敏感信息,
通过 .gitignore 排除,勿推送到公开仓库。
This commit is contained in:
人事系统开发
2026-09-09 16:55:02 +08:00
commit 1ba6efd8ed
2151 changed files with 528780 additions and 0 deletions
+122
View File
@@ -0,0 +1,122 @@
<?php
declare(strict_types=1);
namespace MRBS;
require "../defaultincludes.inc";
http_headers(array("Content-type: application/x-javascript"),
60*30); // 30 minute expiry
?>
'use strict';
$(document).on('page_ready', function() {
<?php
// Turn the table into a datatable, with subtables that appear/disappear when
// the control is clicked, with the subtables also being datatables. Note though
// that the main and sub-datatables are independent and we only display the main search
// box which just applies to the main table rows. (I suppose it would be possible to do
// something clever with the main search box and get it to search the subtables as well)
?>
var maintable = $('#pending_table'),
subtables,
startTimeCol = maintable.find('thead tr:first th.header_start_time').index(),
tableOptions,
pendingDataTable,
i,
colVisIncludeCols;
<?php
// Add a '-' control to the subtables and make them close on clicking it
?>
maintable.find('table.sub th.control')
.text('-');
$(document).on('click', 'table.sub th.control', function () {
var nTr = $(this).closest('.table_container').parent().prev(),
serial = $(this).parent().parent().parent().attr('id').replace('subtable_', '');
$('#subtable_' + serial + '_wrapper').slideUp( function () {
pendingDataTable.row(nTr).child.hide();
nTr.show();
});
});
<?php
// Detach all the subtables from the DOM (detach keeps a copy) so that they
// don't appear, but so that we've got the data when we want to "open" a row
?>
subtables = maintable.find('tr.sub_table').detach();
<?php
// Set up a click event that "opens" the table row and inserts the subtable
?>
maintable.find('td.control')
.text('+');
$(document).on('click', 'td.control', function () {
var nTr = $(this).parent(),
serial = nTr.attr('id').replace('row_', ''),
subtableId = 'subtable_' + serial,
subtable = subtables.find('#' + subtableId).parent().clone(),
columnDefs = [],
subDataTable;
<?php
// We want the columns in the main and sub tables to align. So
// find the widths of the main table columns and use those values
// to set the widths of the subtable columns.
?>
maintable.find('tr').eq(0).find('th').each(function(i){
columnDefs.push({width: ($(this).outerWidth()) + "px",
targets: i});
});
columnDefs.push({orderable: false, targets: 0});
columnDefs = columnDefs.concat(getTypes(subtable));
nTr.hide();
pendingDataTable.row(nTr).child(subtable.get(0)).show();
subtable.closest('td').addClass('table_container');
subDataTable = $('#' + subtableId).DataTable({autoWidth: false,
paging: false,
dom: 't',
order: [[startTimeCol, 'asc']],
columnDefs: columnDefs});
$('#subtable_' + serial + '_wrapper').hide().slideDown();
});
<?php // Turn the table into a datatable ?>
tableOptions = {order: [[startTimeCol, 'asc']]};
tableOptions.columnDefs = [{orderable: false, targets: 0}];
tableOptions.columnDefs = tableOptions.columnDefs.concat(getTypes(maintable));
<?php
// For some reason I don't understand, fnOpen() doesn't seem to work when
// using FixedColumns. We also have to turn off bStateSave. I have raised
// this on the dataTables forum. In the meantime we comment out the FixedColumns.
?>
tableOptions.stateSave = false;
<?php
// Remove the first column from the column visibility
// list because it is the control column
?>
colVisIncludeCols = [];
for (i=1; i<maintable.find('thead tr:first th').length; i++)
{
colVisIncludeCols.push(i);
}
tableOptions.buttons = [{extend: 'colvis',
columns: colVisIncludeCols}];
<?php
// and stop the first column being reordered
?>
tableOptions.colReorder = {"fixedColumnsLeft": 1};
pendingDataTable = makeDataTable('#pending_table', tableOptions);
});