From 3032b27740a3503ed7fa3bafcb7cd73bf2deb164 Mon Sep 17 00:00:00 2001 From: william Date: Fri, 28 Aug 2026 19:50:37 +0200 Subject: [PATCH] =?UTF-8?q?Corrige=20le=20QR=20code=20de=20la=202FA=20invi?= =?UTF-8?q?sible=20=C3=A0=20l'inscription?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deux bugs cumulés dans auth/totp_qrcode_svg.py : - SvgImage (variante utilisée) ne pose aucun attribut viewBox sur le racine — la règle CSS qui le fait tenir dans son cadre (.totpQrWrap svg { width:100% }) n'avait donc rien à quoi se raccorder pour mettre à l'échelle le dessin interne (coordonnées en mm) : le QR code restait invisible/coupé. Remplacé par SvgPathImage, seule variante pure Python de qrcode dont le racine inclut un viewBox. - qrcode.make() préfixe toujours sa sortie d'une déclaration XML (""), valide pour un fichier .svg autonome mais invalide au milieu d'un document HTML — ne garder que ce qui commence à " --- auth/totp_qrcode_svg.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/auth/totp_qrcode_svg.py b/auth/totp_qrcode_svg.py index e4f684d9..337ab2a0 100644 --- a/auth/totp_qrcode_svg.py +++ b/auth/totp_qrcode_svg.py @@ -11,11 +11,23 @@ def totp_provisioning_uri(secret, email): def totp_qrcode_svg(secret, email): """SVG (pas PNG) : la variante "image factory" par défaut de qrcode a - besoin de Pillow pour produire un PNG — SvgImage, elle, est du pur + besoin de Pillow pour produire un PNG — SvgPathImage, elle, est du pur Python, sans dépendance supplémentaire à installer juste pour un QR - code affiché une seule fois par compte, à l'inscription.""" + code affiché une seule fois par compte, à l'inscription. SvgPathImage + précisément (pas le simple SvgImage) : c'est la seule des deux variantes + dont le racine porte un attribut viewBox — sans lui, la règle CSS + qui fait tenir le QR code dans son cadre (.totpQrWrap svg { width:100% }) + n'a rien à quoi se raccorder pour mettre à l'échelle le dessin interne + (en mm) : le QR code restait invisible/coupé au lieu de s'afficher. + + qrcode.make() préfixe toujours sa sortie d'une déclaration XML + ("") — valide pour un fichier .svg autonome, mais + invalide au milieu d'un document HTML : certains navigateurs + n'affichent alors rien du tout à partir de ce point. On ne garde donc + que ce qui commence à "