Files
mrbs-equbao-2026/upgrade/52/post.inc
T
人事系统开发 1ba6efd8ed 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 排除,勿推送到公开仓库。
2026-09-09 16:55:02 +08:00

70 lines
1.6 KiB
PHP

<?php
// -*- mode: php; -*-
namespace MRBS;
global $dbsys;
// Special case for PostgreSQL as attempting to create a function
// with the pgsql.sql file doesn't work due to the way the file
// is split by semi-colons.
if ($dbsys == "pgsql")
{
// Ensure plpgsql language is installed
$sql = <<<END_OF_SQL
CREATE OR REPLACE FUNCTION create_language_plpgsql()
RETURNS BOOLEAN AS \$\$
CREATE LANGUAGE plpgsql;
SELECT TRUE;
\$\$ LANGUAGE SQL;
END_OF_SQL;
$upgrade_handle->command($sql);
$sql = <<<END_OF_SQL
SELECT CASE WHEN NOT
(
SELECT TRUE AS exists
FROM pg_language
WHERE lanname = 'plpgsql'
UNION
SELECT FALSE AS exists
ORDER BY exists DESC
LIMIT 1
)
THEN
create_language_plpgsql()
ELSE
FALSE
END AS plpgsql_created;
END_OF_SQL;
$upgrade_handle->command($sql);
$sql = <<<END_OF_SQL
DROP FUNCTION create_language_plpgsql();
END_OF_SQL;
$upgrade_handle->command($sql);
// Add function to update timestamp column
$sql = <<<END_OF_SQL
CREATE OR REPLACE FUNCTION update_timestamp_column()
RETURNS TRIGGER AS \$\$
BEGIN
NEW.timestamp = NOW();
RETURN NEW;
END;
\$\$ language 'plpgsql';
END_OF_SQL;
$upgrade_handle->command($sql);
// Add triggers for tables with timestamp columns
foreach (array('entry', 'repeat', 'users') as $table)
{
$sql = "CREATE TRIGGER update_" . _tbl($table, false) . "_timestamp " .
"BEFORE UPDATE ON " . _tbl($table, true) . " FOR EACH ROW " .
"EXECUTE PROCEDURE update_timestamp_column()";
$upgrade_handle->command($sql);
}
}