feat(platform-tools): liga platform_connect() e o router de páginas de sistema
O bootstrap só reimplementava pedaços do platform-tools à mão (sessão endurecida, IP do cliente) sem nunca chamar platform_connect() — sem router, só 4 das ~9 páginas de sistema estavam ligadas (faltavam IP bans, Geo, Origem das visitas, Hub), e o log de erro de arranque ainda dizia "[fotografia bootstrap]", copiado sem adaptar. Liga-se com 'auth' => 'own': a app mantém as suas próprias passwords e sessão, porque a auth_attempts local (ip+scope) não tem a coluna identifier que o throttle partilhado exige — trocar para 'shared' partia o throttle. Ganha-se à mesma o bloqueio de IP da frota e o router (platform.php / api/platform.php), com Comunicações e Fila de mensagens declaradas como sysadmin_tools próprias (substituem o Estado SMTP partilhado, que já cobrem). Os stubs de Backups/Actualizações/ Auditoria passam a reencaminhar para o router; o menu de Sistema passa a incluir IP bans, Geo e Origem das visitas. 'conformance' => 'report' para nunca recusar pedidos — só reporta no health endpoint — enquanto o resto da migração de autenticação fica por decidir. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5cf0f14ad2
commit
f066eec7c7
7 files changed
+75
-26
No files matched your search
+37
-1
@@ -15,7 +15,7 @@ env_load(__DIR__ . '/../.env');
|
||||
function _bootstrap_fail(string $logMsg): void {
|
||||
@mkdir(__DIR__ . '/../logs', 0775, true);
|
||||
@error_log('[' . date('c') . '] ' . $logMsg . "\n", 3, __DIR__ . '/../logs/db_error.log');
|
||||
error_log('[fotografia bootstrap] ' . $logMsg);
|
||||
error_log('[fitme bootstrap] ' . $logMsg);
|
||||
http_response_code(500);
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
$tpl = __DIR__ . '/../templates/error_500.php';
|
||||
@@ -79,3 +79,39 @@ if (session_status() === PHP_SESSION_NONE) {
|
||||
session_name('FIT_SESS');
|
||||
session_start();
|
||||
}
|
||||
|
||||
// ─── Ligação ao platform-tools ───────────────────────────────────────────────
|
||||
//
|
||||
// A app mantém as suas próprias passwords e sessão (`config/auth.php`,
|
||||
// `views/auth/login.php`) — não passa a usar o functions_auth.php partilhado
|
||||
// (`'auth' => 'own'`), porque a `auth_attempts` desta app não tem a coluna
|
||||
// `identifier` que o throttle partilhado exige (tem `ip`+`scope`, do seu
|
||||
// próprio throttle em functions_throttle.php). Ainda assim liga-se ao
|
||||
// bloqueio de IP da frota, ao router das páginas de sistema (Backups,
|
||||
// Actualizações, Auditoria, IP bans, Geo, Origem das visitas, Hub) e ao
|
||||
// resto do platform-tools, tudo por cima da autenticação própria.
|
||||
require_once dirname(__DIR__) . '/shared/platform-tools/functions_connector.php';
|
||||
platform_connect($pdo, [
|
||||
'auth' => 'own',
|
||||
'guard' => 'require_sysadmin',
|
||||
'router' => true,
|
||||
'conformance' => 'report', // nunca recusa — só reporta no health endpoint
|
||||
|
||||
// A Comunicações desta app já cobre SMTP (config + testes); o Estado SMTP
|
||||
// partilhado seria um segundo editor da mesma configuração.
|
||||
'replaced_tools' => ['smtp_status' => 'views/sysadmin/comms.php'],
|
||||
'hide_tools' => ['smtp_status'],
|
||||
'sysadmin_tools' => [[
|
||||
'title' => 'Comunicações',
|
||||
'description' => 'Configuração SMTP, fila de mensagens e testes de envio.',
|
||||
'icon' => 'bi-broadcast',
|
||||
'url' => 'views/sysadmin/comms.php',
|
||||
'color' => 'info',
|
||||
], [
|
||||
'title' => 'Fila de mensagens',
|
||||
'description' => 'O que saiu, o que falhou e porquê.',
|
||||
'icon' => 'bi-envelope-paper',
|
||||
'url' => 'views/sysadmin/messages.php',
|
||||
'color' => 'secondary',
|
||||
]],
|
||||
]);
|
||||
Reference in new issue
Block a user