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
@@ -2,9 +2,9 @@
|
||||
// ─── Arranque partilhado dos endpoints do hub ────────────────────────────────
|
||||
//
|
||||
// Os três endpoints (health, ops, pair) são iguais em todas as plataformas, mas
|
||||
// o arranque não é: a frota tem dois stacks. O `config/` (dance, design,
|
||||
// fotografia, mstudio, quack, hub) abre a ligação em config/db.php e tem os
|
||||
// helpers em config/functions.php; a silver usa `src/` com App\Database.
|
||||
// o arranque de cada site vive no seu config/db.php, que abre a ligação, e o
|
||||
// config/functions.php com os helpers. (A silver tinha um stack `src/` à parte
|
||||
// até 2026-09; passou para o mesmo contrato e o ramo dela saiu daqui.)
|
||||
//
|
||||
// Em vez de dezoito stubs com o arranque copiado — três endpoints × seis sites,
|
||||
// e o dobro dos sítios onde uma correcção se esquece —, detecta-se aqui. Um
|
||||
@@ -21,9 +21,9 @@
|
||||
// Não pode é ser tratada como as outras. Aqui distingue-se **não ter** base de
|
||||
// dados de **não conseguir** abri-la:
|
||||
//
|
||||
// nem config/db.php nem src/db.php existem → não há camada de dados nenhuma,
|
||||
// não há config/db.php → não há camada de dados nenhuma,
|
||||
// é o desenho do site. Segue sem.
|
||||
// um deles existe mas o $pdo não apareceu → avaria. 503, como antes.
|
||||
// existe mas o $pdo não apareceu → avaria. 503, como antes.
|
||||
//
|
||||
// A distinção sai da presença dos ficheiros e não de um flag por site, porque um
|
||||
// flag é uma coisa a mais para alguém pôr errada: um site com base de dados a
|
||||
@@ -39,8 +39,7 @@
|
||||
$repo_root = dirname(__DIR__, 2);
|
||||
|
||||
/** Este site tem sequer uma camada de dados? Ver a nota acima. */
|
||||
$hub_has_db_layer = is_file($repo_root . '/config/db.php')
|
||||
|| is_file($repo_root . '/src/db.php');
|
||||
$hub_has_db_layer = is_file($repo_root . '/config/db.php');
|
||||
|
||||
if (!isset($pdo) || !$pdo instanceof PDO) {
|
||||
if (is_file($repo_root . '/config/db.php')) {
|
||||
@@ -53,10 +52,6 @@ if (!isset($pdo) || !$pdo instanceof PDO) {
|
||||
if (!function_exists('base_url') && is_file($repo_root . '/config/functions.php')) {
|
||||
require_once $repo_root . '/config/functions.php';
|
||||
}
|
||||
} elseif (is_file($repo_root . '/src/db.php')) {
|
||||
require_once $repo_root . '/src/config.php';
|
||||
require_once $repo_root . '/src/db.php';
|
||||
$pdo = \App\Database::getConnection();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user