'Non identifié — veuillez vous connecter.']); exit; } try { $pdoRouter = getRouterConnection(); } catch (PDOException $e) { http_response_code(500); echo json_encode(['error' => 'Connexion à MIRADOR impossible']); exit; } function tailleDossier(string $chemin): int { if (!is_dir($chemin)) return 0; $total = 0; $iterateur = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($chemin, FilesystemIterator::SKIP_DOTS)); foreach ($iterateur as $fichier) { if ($fichier->isFile()) $total += $fichier->getSize(); } return $total; } $method = $_SERVER['REQUEST_METHOD']; if ($method === 'GET') { $lignes = $pdoRouter->query('SELECT MIR_Email, MIR_Code, MIR_ServeurHost, MIR_BaseNom, MIR_Espace FROM MIR_Users ORDER BY MIR_Email')->fetchAll(); $resultat = []; foreach ($lignes as $l) { $dossierRelatif = cheminTenant($l['MIR_ServeurHost'], $l['MIR_BaseNom']) . '/' . ($l['MIR_Espace'] ?: '(pas encore créé)'); $cheminAbsolu = RACINE_ESPACES . '/' . $dossierRelatif; $existe = $l['MIR_Espace'] && is_dir($cheminAbsolu); $resultat[] = [ 'MIR_Email' => $l['MIR_Email'], 'MIR_Code' => $l['MIR_Code'], 'MIR_BaseNom' => $l['MIR_BaseNom'], 'dossier_relatif' => $dossierRelatif, 'existe' => $existe, 'taille_octets' => $existe ? tailleDossier($cheminAbsolu) : 0, ]; } echo json_encode(['espaces' => $resultat]); exit; } if ($method === 'POST') { $data = json_decode(file_get_contents('php://input'), true) ?? []; $action = (string) ($data['action'] ?? ''); $mirEmail = trim((string) ($data['MIR_Email'] ?? '')); if ($action !== 'provisionner' || $mirEmail === '') { http_response_code(400); echo json_encode(['error' => 'Requête invalide']); exit; } // Clé MIR_Email, jamais MIR_Code — voir commentaire de jetonUtilisateur() // dans espace_utilisateur.php (MIR_Code n'est pas unique dans MIR_Users). $stmt = $pdoRouter->prepare('SELECT MIR_ServeurHost, MIR_BaseNom FROM MIR_Users WHERE MIR_Email = ? LIMIT 1'); $stmt->execute([$mirEmail]); $ligne = $stmt->fetch(); if (!$ligne) { http_response_code(404); echo json_encode(['error' => 'Utilisateur introuvable dans MIRADOR']); exit; } $chemin = resoudreEspaceUtilisateur($pdoRouter, $mirEmail, $ligne['MIR_ServeurHost'], $ligne['MIR_BaseNom']); echo json_encode(['success' => true, 'chemin' => $chemin]); exit; } http_response_code(405); echo json_encode(['error' => 'Méthode non autorisée']);