Stockage Tenant-Aware¶
Le module de stockage organise les fichiers téléchargés par tenant pour prévenir l’accès cross-tenant aux fichiers.
Module : src.share_kernel.infrastructure.storage
TenantFileSystemStorage¶
Stockage sur le système de fichiers local, organisé par tenant.
Structure :
MEDIA_ROOT/tenants/<tenant_slug>/<upload_path>Retourne le répertoire racine pour le tenant courant.
Retourne le chemin complet du fichier, scopé au tenant.
Retourne l’URL du fichier, scopée au tenant.
Sauvegarde un fichier sous le répertoire du tenant. Crée le répertoire automatiquement si nécessaire.
Configuration :
# settings.py DEFAULT_FILE_STORAGE = 'src.share_kernel.infrastructure.storage.TenantFileSystemStorage'
Structure sur disque :
media/ ├── tenants/ │ ├── acme-corp/ │ │ ├── invoices/ │ │ │ └── inv-001.pdf │ │ └── logos/ │ │ └── logo.png │ └── beta-inc/ │ └── invoices/ │ └── inv-002.pdf └── shared/ └── templates/ └── default.pdf
TenantAzureBlobStorage¶
Backend Azure Blob Storage avec préfixes de blob scopés par tenant.
Structure :
<container>/tenants/<tenant_slug>/<name>Prérequis :
pip install azure-storage-blob- Parameters:
connection_string – Chaîne de connexion Azure (ou
AZURE_STORAGE_CONNECTION_STRING)container_name – Nom du container (ou
AZURE_STORAGE_CONTAINER_NAME, défaut:"media")custom_domain – Domaine CDN personnalisé (optionnel)
overwrite_files – Autoriser l’écrasement (défaut:
False)
Ouvre et retourne un fichier depuis Azure Blob Storage.
Sauvegarde un fichier dans Azure Blob Storage.
Supprime un fichier d’Azure Blob Storage.
Vérifie si un fichier existe.
Retourne la taille du fichier en octets.
Retourne l’URL du fichier (CDN si configuré).
Liste le contenu d’un répertoire (répertoires, fichiers).
Configuration :
# settings.py DEFAULT_FILE_STORAGE = 'src.share_kernel.infrastructure.storage.TenantAzureBlobStorage' AZURE_STORAGE_CONNECTION_STRING = "DefaultEndpointsProtocol=https;..." AZURE_STORAGE_CONTAINER_NAME = "media" AZURE_STORAGE_CUSTOM_DOMAIN = "cdn.example.com" # Optionnel