feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD) * DEV: Clés TEST Pierre (mode test) * REC: Clés TEST Client (mode test) * PROD: Clés LIVE Client (mode live) - Ajout de la gestion des bases de données immeubles/bâtiments * Configuration buildings_database pour DEV/REC/PROD * Service BuildingService pour enrichissement des adresses - Optimisations pages et améliorations ergonomie - Mises à jour des dépendances Composer - Nettoyage des fichiers obsolètes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -5,22 +5,55 @@ declare(strict_types=1);
|
||||
class Session {
|
||||
public static function start(): void {
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
// Configuration d'un répertoire de sessions dédié et persistant
|
||||
$sessionPath = __DIR__ . '/../../sessions';
|
||||
if (!is_dir($sessionPath)) {
|
||||
mkdir($sessionPath, 0700, true);
|
||||
}
|
||||
ini_set('session.save_path', $sessionPath);
|
||||
|
||||
// Configuration des sessions adaptée pour les applications mobiles
|
||||
ini_set('session.use_strict_mode', '1');
|
||||
ini_set('session.cookie_httponly', '1');
|
||||
|
||||
|
||||
// Permettre les connexions non-HTTPS en développement
|
||||
$isProduction = (getenv('APP_ENV') === 'production');
|
||||
ini_set('session.cookie_secure', $isProduction ? '1' : '0');
|
||||
|
||||
|
||||
// SameSite None pour permettre les requêtes cross-origin (applications mobiles)
|
||||
ini_set('session.cookie_samesite', 'None');
|
||||
ini_set('session.gc_maxlifetime', '86400'); // 24 heures
|
||||
|
||||
// Configuration de la durée de vie des sessions : 24 heures
|
||||
$sessionLifetime = 86400; // 24 heures
|
||||
ini_set('session.gc_maxlifetime', (string)$sessionLifetime);
|
||||
ini_set('session.cookie_lifetime', (string)$sessionLifetime);
|
||||
|
||||
// Configuration du garbage collector pour qu'il ne supprime pas trop tôt
|
||||
// gc_probability / gc_divisor = probabilité d'exécution (1/100 = 1%)
|
||||
ini_set('session.gc_probability', '1');
|
||||
ini_set('session.gc_divisor', '100');
|
||||
|
||||
// Récupérer le session_id du Bearer token si présent
|
||||
self::getSessionFromBearer();
|
||||
|
||||
session_start();
|
||||
|
||||
// Log détaillé après le démarrage de la session (DEBUG)
|
||||
$logFile = __DIR__ . '/../../logs/session_' . date('Y-m-d') . '.log';
|
||||
$sessionId = session_id();
|
||||
$sessionExists = isset($_SESSION) && !empty($_SESSION);
|
||||
$sessionData = $sessionExists ? json_encode($_SESSION) : 'empty';
|
||||
$sessionFile = $sessionPath . '/sess_' . $sessionId;
|
||||
$sessionFileExists = file_exists($sessionFile);
|
||||
|
||||
$logMessage = date('Y-m-d H:i:s') . " - Session started\n";
|
||||
$logMessage .= " Session ID: $sessionId\n";
|
||||
$logMessage .= " Session path: $sessionPath\n";
|
||||
$logMessage .= " Session file exists: " . ($sessionFileExists ? 'YES' : 'NO') . "\n";
|
||||
$logMessage .= " Session data exists: " . ($sessionExists ? 'YES' : 'NO') . "\n";
|
||||
$logMessage .= " Session data: $sessionData\n";
|
||||
|
||||
file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user