Remember the Ecole Directe trusted device (cn/cv) to skip the QCM and avoid account lockouts - #306
Merged
Merged
Conversation
Part of the trusted-device change (see issue hacf-fr#305): once the QCM is validated, the cn/cv couple is stored and sent back on the next logins, so the QCM is no longer asked and Ecole Directe no longer locks the account.
Load the trusted device from the QCM store, hand it to the client before login() and save it again only when Ecole Directe issued a new couple (see issue hacf-fr#305).
EDApiClient accepts a cn/cv couple: when set, the library goes straight to the "fa" login (no password-only login, no QCM). If Ecole Directe no longer accepts the device, fall back once to a full login and expose the new couple. Also tolerate a missing ed_client in close() (hacf-fr#255). See issue hacf-fr#305.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Mémorise l'appareil de confiance (couple
cn/cv) renvoyé par Ecole Directe après le QCM et le renvoie aux connexions suivantes (champfa), comme le fait l'application mobile officielle. Sans cela, chaque actualisation est vue par Ecole Directe comme un nouvel appareil (connexion par mot de passe → 250 → QCM), et le compte finit par être bloqué (« tentatives infructueuses de connexion ») après quelques connexions rapprochées, même réussies — voir #305 pour l'analyse complète, les preuves et le journal.api/client.py—EDApiClient: attributscn/cv;login()prend le cheminfaquand ils sont connus (cookie_jar = CookieJar()est la condition exigée par la bibliothèqueecoledirecte), retombe une seule fois sur la connexion complète (QCM) si Ecole Directe n'accepte plus l'appareil (code ≠ 200, typiquement 250) et expose le couple éventuellement renouvelé ;close()tolère uned_clientabsent (évite l'AttributeErrorde AttributeError: 'EDApiClient' object has no attribute 'ed_client' après résolution du blocage QCM — présent en v1.1.11 et v1.1.13 #255).coordinator/base.py— le couple est conservé dans le store QCM existant (.storage/ecole_directe_qcm_<entry_id>, clétrusted_device:cn,cv,saved_at), chargé dans_async_setup, passé au client avantlogin(), réenregistré seulement s'il change.README.md— paragraphe dans « Double autentification ».Comportement : QCM une seule fois (première connexion après la configuration, comme aujourd'hui), puis plus jamais tant qu'Ecole Directe accepte l'appareil. Pas de migration : les installations existantes n'ont pas encore la clé
trusted_device, elles passent une dernière fois par le QCM et le mémorisent.Related Issue
Fixes #305
Related: #255
Type of Change
Checklist
ruff checketruff format --checkavec le.ruff.tomldu dépôt : OK)Testing
ecoledirectesimulée : premier login sans appareil → QCM puis mémorisation ; logins suivants →faseul, sans QCM et sans réécriture du store ; appareil refusé (250) → un seul QCM, nouveau couple mémorisé ; exception de connexion (compte bloqué) → rien n'est touché.Connection OK - identifiant: [...]à chaque actualisation.ruff).