dashboard : la page de connexion parle à l'API réelle (#25) #138

Merged
marvin merged 5 commits from marvin/25-connexion-session into develop 2026-09-07 07:29:39 +00:00
Member

Ce que ça change

La page de connexion cesse de passer par les comptes de démonstration : elle appelle /auth/login, /auth/refresh, /auth/me et /auth/logout, et le dépôt de session reprend une session existante au chargement. Les comptes de jeu restent disponibles sous VITE_AUTH_MOCK=1 pour montrer l'écran sans PostgreSQL, et ne sont jamais dans le paquet de production.

Premier des trois lots front extraits de #127, à relire seul.

Refs #25

Preuve

57 tests vitest passes
build de production propre

Session reprise au chargement : session.reprendre() retrouve le cookie ev_access
pose par /auth/login et affiche l'identite sans redemander les identifiants. C'est
le comportement que cette PR ajoute -- la methode existait sans etre jamais appelee.

Ecran de connexion, session deja ouverte

Relecture

  • Un pair a relu et laissé un commentaire, même court
  • Ses remarques sont traitées, ou une réponse explique pourquoi elles ne le sont pas

Ce qui suit le code

(rien de coché de ce côté ; VITE_AUTH_MOCK est déjà dans .env.example)

Où regarder en priorité

  • tests/unit/paquet-de-production.test.js est ce qui garantit que ni le module de démonstration ni le mot de passe qu'il porte n'entrent dans le paquet livré : import.meta.env.DEV se replie sur false à la construction, et l'import est dynamique. C'est le test à casser volontairement pour vérifier qu'il tient.
  • #25 n'est pas fermé par cette PR : le ticket demande aussi un bouton de réinitialisation du mot de passe, qui n'existe ni côté front ni côté API. Le ticket est marqué Portée/Post-jury.
## Ce que ça change La page de connexion cesse de passer par les comptes de démonstration : elle appelle `/auth/login`, `/auth/refresh`, `/auth/me` et `/auth/logout`, et le dépôt de session reprend une session existante au chargement. Les comptes de jeu restent disponibles sous `VITE_AUTH_MOCK=1` pour montrer l'écran sans PostgreSQL, et ne sont jamais dans le paquet de production. Premier des trois lots front extraits de #127, à relire seul. Refs #25 ## Preuve ``` 57 tests vitest passes build de production propre ``` Session reprise au chargement : `session.reprendre()` retrouve le cookie `ev_access` pose par `/auth/login` et affiche l'identite sans redemander les identifiants. C'est le comportement que cette PR ajoute -- la methode existait sans etre jamais appelee. ![Ecran de connexion, session deja ouverte](https://10.105.200.41/attachments/ee625152-1569-4907-b622-426a2e161530) ## Relecture - [ ] Un pair a relu et laissé un commentaire, même court - [ ] Ses remarques sont traitées, ou une réponse explique pourquoi elles ne le sont pas ## Ce qui suit le code (rien de coché de ce côté ; `VITE_AUTH_MOCK` est déjà dans `.env.example`) ## Où regarder en priorité - `tests/unit/paquet-de-production.test.js` est ce qui garantit que ni le module de démonstration ni le mot de passe qu'il porte n'entrent dans le paquet livré : `import.meta.env.DEV` se replie sur `false` à la construction, et l'import est dynamique. C'est le test à casser volontairement pour vérifier qu'il tient. - **#25 n'est pas fermé par cette PR** : le ticket demande aussi un bouton de réinitialisation du mot de passe, qui n'existe ni côté front ni côté API. Le ticket est marqué `Portée/Post-jury`.
dashboard: connexion du back avec le front de la page connxion fait
All checks were successful
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m5s
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 3s
Intégration / Aucun secret commité (pull_request) Successful in 3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 25s
02a0d16be0
marvin changed title from dashboard : la page de connexion parle � l'API r�elle (#25) to dashboard : la page de connexion parle à l'API réelle (#25) 2026-09-04 08:04:03 +00:00
marvin self-assigned this 2026-09-04 08:35:38 +00:00
Merge branch 'develop' into marvin/25-connexion-session
All checks were successful
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 6s
Intégration / Aucun secret commité (pull_request) Successful in 3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 18s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m54s
0ae30ba74f
Member

@marvin Deux points à revoir / se questionner pour moi :

  • reprendre() est présente (4x) dans tes tests masi n'est jamais appelée dans en dehors, c'est normal?
  • il te manquerait pas une garde sur fermerSession() (le MOCK_ACTIF)? Je vois qu'il est sur lireIdentite() et rafraichirSession()

Sinon le reste est bon pour moi

@marvin Deux points à revoir / se questionner pour moi : - reprendre() est présente (4x) dans tes tests masi n'est jamais appelée dans en dehors, c'est normal? - il te manquerait pas une garde sur fermerSession() (le MOCK_ACTIF)? Je vois qu'il est sur lireIdentite() et rafraichirSession() Sinon le reste est bon pour moi
UNE MÉTHODE QUE SEULS SES TESTS APPELLENT EST MORTE. « reprendre() » était
écrit, exporté, couvert par quatre cas — et appelé de nulle part. Relecture
de Justine sur la #138 : recharger la page redemandait les identifiants
d'une session parfaitement valide, cookies encore bons. La PR annonçait la
reprise ; le fil n'était pas branché.

L'appel vit dans « App.vue » et non dans la page de connexion : les cookies
de session ne regardent aucun écran en particulier, et la reprise doit valoir
pour les écrans à venir (#23, #24). Il ne bloque pas le montage — attendre
l'API avant d'afficher quoi que ce soit ferait une page blanche le temps de
l'aller-retour, et sans fin si l'API se tait.

« tests/unit/App.test.js » couvre les trois chemins que « reprendre() »
distingue : cookie encore bon, accès expiré qui déclenche la rotation une
seule fois, et rien à reprendre. Les deux premiers rougissent sur l'App.vue
d'avant, vérifié.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
dashboard: la démonstration ne poste plus sur /auth/logout (#25)
All checks were successful
Intégration / Contrôles statiques du dépôt (pull_request) Successful in 6s
Intégration / Aucun secret commité (pull_request) Successful in 3s
Intégration / Tableau de bord — dépendances, tests et construction (pull_request) Successful in 22s
Infra Ansible / Playbooks Ansible valides (pull_request) Successful in 1m14s
Intégration / Python — qualité, tests et dépendances (pull_request) Successful in 2m56s
fc7342a6c3
« fermerSession() » était la seule des quatre routes à ne pas porter la garde
« MOCK_ACTIF » — relecture de Justine sur la #138. Sous « VITE_AUTH_MOCK=1 »,
la console annonçait qu'aucun appel ne partait vers l'API pendant que
« Changer de compte » postait sur /auth/logout. Sans API en face, l'appel
échoue ; « deconnecter() » avale l'échec et repose la page, donc rien ne se
voyait — un mode de démonstration qui n'en est plus tout à fait un.

La garde rend le « null » du 204, soit une fermeture réussie : la
démonstration ne pose aucun cookie, il n'y a rien à révoquer, et
l'utilisateur repose sur la page de connexion, ce qu'il a demandé.

Le cas ajouté exerce les trois routes gardées d'un coup et vérifie que
« fetch » n'est jamais appelé. Il rougit sans la garde, vérifié.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Author
Member

Corrigée !

Corrigée !
marvin closed this pull request 2026-09-04 14:01:09 +00:00
marvin reopened this pull request 2026-09-07 07:26:08 +00:00
marvin merged commit f21a619209 into develop 2026-09-07 07:29:39 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
g2/enervision!138
No description provided.