fix : orphelins search_index + SESSION_NAME non appliqué

- ArticleManager::getSearchIndex() : rebuild automatique si un UUID
  référencé dans search_index.json n'existe plus sur le disque (article
  supprimé hors CMS via rsync ou suppression manuelle). Même logique que
  getBySlug() qui nettoie déjà le slug_index à la volée.

- bootstrap.php : lire SESSION_NAME depuis $_ENV avant session_start(),
  permettant de personnaliser le nom du cookie de session via le .env.

- oidc/{start,callback,me}.php : inverser l'ordre des require pour charger
  config.php (dotenv) avant bootstrap.php, condition nécessaire pour que
  SESSION_NAME soit disponible au démarrage de la session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-14 10:06:11 +02:00
parent 03120457a7
commit 0b8077e43c
5 changed files with 14 additions and 3 deletions
+4
View File
@@ -8,6 +8,10 @@ if (!defined('BASE_PATH')) {
if (session_status() === PHP_SESSION_NONE) {
$isHttps = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off';
$sessionName = $_ENV['SESSION_NAME'] ?? (getenv('SESSION_NAME') ?: null);
if ($sessionName !== null && $sessionName !== '') {
session_name($sessionName);
}
session_set_cookie_params([
'lifetime' => 0,
'path' => '/',
+1 -1
View File
@@ -3,8 +3,8 @@
declare(strict_types=1);
require_once dirname(__DIR__, 2) . '/vendor/autoload.php';
require_once dirname(__DIR__, 2) . '/bootstrap.php';
require_once dirname(__DIR__, 2) . '/config/config.php';
require_once dirname(__DIR__, 2) . '/bootstrap.php';
if (!function_exists('env')) {
function env(string $key, ?string $default = null): ?string
+1 -1
View File
@@ -5,8 +5,8 @@
declare(strict_types=1);
require_once dirname(__DIR__, 2) . '/vendor/autoload.php';
require_once dirname(__DIR__, 2) . '/bootstrap.php';
require_once dirname(__DIR__, 2) . '/config/config.php';
require_once dirname(__DIR__, 2) . '/bootstrap.php';
function maskToken(?string $t): string
{
+1 -1
View File
@@ -3,8 +3,8 @@
declare(strict_types=1);
require_once dirname(__DIR__, 2) . '/vendor/autoload.php';
require_once dirname(__DIR__, 2) . '/bootstrap.php';
require_once dirname(__DIR__, 2) . '/config/config.php';
require_once dirname(__DIR__, 2) . '/bootstrap.php';
if (!function_exists('env')) {
function env(string $key, ?string $default = null): ?string
+7
View File
@@ -867,6 +867,13 @@ class ArticleManager
$this->rebuildSearchIndex();
return $this->searchIndexCache;
}
// Rebuild si des UUID ont été supprimés hors CMS (ex. rsync, suppression manuelle)
foreach ($data as $entry) {
if (!is_dir($this->dataDir . '/' . ($entry['uuid'] ?? ''))) {
$this->rebuildSearchIndex();
return $this->searchIndexCache;
}
}
$this->searchIndexCache = $data;
return $this->searchIndexCache;
}