feat(audit): platform-tools atualizado (12f26fd) e registo de auditoria ligado
- shared/platform-tools: ea3616a → 12f26fd (27 commits). Traz o módulo de audit (f761d99, o pin da frota), «manter sessão iniciada», o registo de segurança da frota (o gancho que o login já tinha passa a funcionar) e a correção do IP do cliente encontrada nesta auditoria (último X-Forwarded-For / X-Real-IP), promovida ao partilhado. client_ip() da app delega nele. - config/functions_audit.php: audit() sobre platform_audit(); tabela audit_log criada no primeiro uso, segredos ocultados, nunca parte a ação. - Registado: login, falha de login, bloqueio por excesso de tentativas, logout, pedidos de recuperação, mudança/definição de palavra-passe, registo e criação de utilizadores, convites, perfil (antes/depois), todas as definições (db_update_setting, com valor anterior), cada passo da lixeira (apagar, restaurar, eliminar de vez) e ações nas mensagens. - Sistema → Auditoria (views/sysadmin/audit.php), só sysadmin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5e300fc341
commit
0e8b53f620
65 files changed
+5852
-455
No files matched your search
@@ -80,6 +80,16 @@ function setting(string $key, $default = null) {
|
||||
}
|
||||
|
||||
function db_update_setting(PDO $pdo, string $key, string $value, ?int $userId = null): void {
|
||||
// Valor anterior para o audit (os segredos são ocultados pelo módulo, pelo
|
||||
// nome da chave: *password*, *token*, *key*, *secret*).
|
||||
$old = null;
|
||||
try {
|
||||
$o = $pdo->prepare("SELECT setting_value FROM system_settings WHERE setting_key = ?");
|
||||
$o->execute([$key]);
|
||||
$old = $o->fetchColumn();
|
||||
$old = $old === false ? null : (string) $old;
|
||||
} catch (Throwable $e) {}
|
||||
|
||||
$s = $pdo->prepare(
|
||||
"INSERT INTO system_settings (setting_key, setting_value, updated_by)
|
||||
VALUES (?, ?, ?)
|
||||
@@ -88,4 +98,10 @@ function db_update_setting(PDO $pdo, string $key, string $value, ?int $userId =
|
||||
);
|
||||
$s->execute([$key, $value, $userId]);
|
||||
settings_cache_clear();
|
||||
if ($old !== $value && function_exists('platform_audit')) {
|
||||
platform_audit($pdo, 'settings.update', [
|
||||
'target_type' => 'setting', 'target_id' => $key, 'target_label' => $key,
|
||||
'changes' => [$key => ['antes' => $old, 'depois' => $value]],
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user