Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Utilisation

Gestion des fichiers privés dans le backend Chrome pour l'impression

Comment les fichiers privés sont gérés lors de l'impression avec le backend Chrome dans Dokos

Gestion des fichiers privés dans le backend Chrome pour l'impression

Dokos permet désormais de gérer l'accès aux fichiers privés lors de l'impression de documents via le backend Chrome. Cette fonctionnalité renforce la sécurité en appliquant les mêmes règles de permission que pour le téléchargement des fichiers privés.

Contexte

Lors de l'impression de documents contenant des fichiers privés (comme des logos, des pièces jointes ou des images de signature), le système doit vérifier que l'utilisateur a bien les droits d'accès à ces fichiers. Auparavant, cette vérification n'était pas effectuée dans le backend Chrome, ce qui pouvait entraîner des problèmes d'accès ou des erreurs d'impression.

Fonctionnement

Règles de permission

  1. Vérification des droits d'accès : Avant d'inclure un fichier privé dans un document imprimé, le système vérifie que l'utilisateur a les droits nécessaires pour y accéder.
  2. Administrateurs : Les utilisateurs avec le rôle Administrateur ont automatiquement accès à tous les fichiers privés.
  3. Utilisateurs standard : Les autres utilisateurs doivent avoir les permissions appropriées sur le document parent du fichier (par exemple, une Facture ou un Bon de commande).

Processus technique

  1. Résolution du chemin : Le système utilise os.path.realpath pour résoudre le chemin du fichier, évitant ainsi les problèmes de traversée de chemin (path traversal).
  2. Vérification des permissions : Le système appelle find_file_by_url et is_downloadable() pour vérifier si l'utilisateur peut accéder au fichier.
  3. Gestion des erreurs : Si l'accès est refusé, une erreur AccessDenied est enregistrée dans les logs, et le fichier n'est pas inclus dans le document imprimé.

Exemple d'utilisation

Scénario : Impression d'une facture avec un logo privé

  1. Préparation :
    • Le logo de l'entreprise Maison Verte SARL est stocké comme un fichier privé dans Dokos.
    • Une facture est créée et inclut ce logo.
  2. Impression :
    • Un utilisateur standard (par exemple, Paul Martin, responsable des ventes) tente d'imprimer la facture.
    • Le système vérifie que Paul Martin a bien les droits d'accès à la facture.
    • Si les droits sont valides, le logo est inclus dans le PDF généré.
    • Si les droits sont insuffisants, une erreur est enregistrée, et le logo n'apparaît pas dans le PDF.

Bonnes pratiques

  • Vérifiez les permissions : Assurez-vous que les utilisateurs ont les droits appropriés sur les documents contenant des fichiers privés avant de tenter une impression.
  • Testez les impressions : Avant de déployer cette fonctionnalité en production, testez l'impression de documents contenant des fichiers privés avec différents rôles d'utilisateurs.
  • Surveillez les logs : En cas d'erreurs d'impression, consultez les logs pour identifier les problèmes d'accès aux fichiers privés.

Dépannage

Problème : Le fichier privé n'apparaît pas dans le PDF imprimé

  1. Vérifiez les permissions : Assurez-vous que l'utilisateur a les droits d'accès au document parent du fichier privé.
  2. Consultez les logs : Recherchez des erreurs AccessDenied dans les logs de Dokos.
  3. Testez avec un administrateur : Si le fichier apparaît pour un administrateur mais pas pour un utilisateur standard, cela confirme un problème de permissions.

Problème : Erreur lors de l'impression

  1. Vérifiez le chemin du fichier : Assurez-vous que le chemin du fichier privé est correct et qu'il n'y a pas de caractères spéciaux ou d'espaces problématiques.
  2. Testez avec un fichier public : Si l'impression fonctionne avec un fichier public mais pas avec un fichier privé, cela indique un problème de permissions ou de chemin.