feat: authentification QR code / token pour Pronote #6
Reference in New Issue
Block a user
Delete Branch "feat/qr-token-auth"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Ajoute le mode d'authentification
PRONOTE_AUTH_MODE=qr_tokencomme alternative au modepasswordpour les instances Pronote utilisant HubEduConnect/EduConnect où l'authentification par mot de passe échoue (CAPTCHA, MFA, flux SAML modifié). Le pipeline s'enrôle via QR code puis persiste un token rotatif entre les exécutions. En cas d'échec de rotation, l'utilisateur est notifié via XMPP.Changes
PronoteSettings: nouveaux champsauth_mode(password|qr_token),qr_code_file,qr_pin(SecretStr)PronoteAuthState(nouveau module) : persistance du token rotatif dans.pronote_auth_state.json— écriture atomique, permissions0600dès la création, symlink-safe (O_EXCL+O_NOFOLLOW)PronoteClient._connect(): branchingpassword/qr_token—token_loginavec creds persistés,qrcode_loginpour l'enrôlement initial,export_credentialspersisté après chaque login réussiPronoteAuthRotationError(nouvelle erreur) : levée en cas d'échec de rotation du token, propagée sans wrapping à traversPronoteFetcheretfetch_stepjusqu'àPipelineRunner.run()qui notifie via XMPP (si canal disponible etdry_runinactif)_is_pronotepy_configured()mode-aware :qr_tokenne requiert quePRONOTE_URL_collect_auth_secrets(): redaction des secrets explicites (token, PIN, jeton QR) dans tous les logs du chemin d'authentification.env.example:PRONOTE_AUTH_MODE,PRONOTE_QR_CODE_FILE,PRONOTE_QR_PINAGENTS.md: contrat d'authentification QR code / tokenGuidePronote: section enrôlement, exécutions suivantes, ré-enrôlement manuelTests
686 tests passés, couverture 94.87%. 35 tests QR/token dédiés :
Checklist
password(défaut inchangé)ruff check .✅ |ruff format --check .✅ |mypy .✅ |bandit✅Breaking changes
Aucune. Le mode
passwordreste le défaut inchangé. Les déploiements existants ne nécessitent aucune modification de configuration.Notes
v0.1.2(per AGENTS.md §13) : générer un QR code frais depuis l'app mobile Pronote, configurerPRONOTE_AUTH_MODE=qr_token+PRONOTE_QR_CODE_FILE+PRONOTE_QR_PIN, lancer le pipeline..pronote_auth_state.jsonest mis à jour automatiquement après chaque login réussi.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.