mirror of
https://github.com/JMP-MS/ASPIC.git
synced 2026-10-27 16:07:10 +00:00
V1.22.23 Passage à Claude Code et création du BackOffice
This commit is contained in:
+97
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/**
|
||||
* ASPIC — espaces.php
|
||||
*
|
||||
* Endpoint du BackOffice (11 septembre 2026) — vérification/administration
|
||||
* des espaces disque privés (voir espace_utilisateur.php). Construit pour
|
||||
* répondre à un besoin explicite de Jean-Marc : pouvoir toujours retrouver,
|
||||
* en un clic, le dossier réel d'un utilisateur — l'opacité des noms de
|
||||
* dossiers protège contre un visiteur extérieur, jamais contre lui.
|
||||
*
|
||||
* GET : pour chaque ligne de MIR_Users, le chemin résolu (calculé, jamais
|
||||
* deviné), s'il existe déjà sur disque, et sa taille.
|
||||
* POST { "action": "provisionner", "MIR_Code": "JMP" } : force la création
|
||||
* immédiate du dossier (au lieu d'attendre un premier besoin réel).
|
||||
*/
|
||||
|
||||
session_start();
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
require __DIR__ . '/db.php';
|
||||
require __DIR__ . '/espace_utilisateur.php';
|
||||
|
||||
if (empty($_SESSION['USR_Code'])) {
|
||||
http_response_code(401);
|
||||
echo json_encode(['error' => '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']);
|
||||
Reference in New Issue
Block a user