Skip to content

Conversation

@mfo
Copy link
Contributor

@mfo mfo commented Oct 30, 2025

crisp : https://app.crisp.chat/website/266ba25d-91d1-4774-b01f-a23ba63d662f/inbox/session_9464dc97-a5e9-4b44-9813-327aecc9a879/

probleme : j'arrive pas a faire une action

En gros je soumet un form. et PAF page 422. Le constat est que les usagers peuvent se reconnecter dans un onglet et essayer de soumettre une action dans un autre onglet : donc ca raise pour cause de csrf

solution :

  1. on maj la vue pour isoler une action principale : revenir a la page précédente (+on diminue l'importance du bouton contactez-nous). C'est un peu un dark pattern, mais les usagers seront plus autonome ainsi je pense.
  2. on redirige automatiquement vers le referer (plutot que de demander a un usager de cliquer sur un bouton, autant le faire a sa place ?). On peut faire ça car : les csrf sont checké suite a des POST/DELETE/PATCH : donc ca vient forcement d'un GET, et ce GET en question, c'est la page d'avant, le referer. Détail, il y a un petit micmac pour le flash[:alert], c'est parceque le ErrorsController est lié via les config.exceptions_app = self.routes : dans le déroulement de la gestion d'err d'une requete, ça court circuite les middleware ActionDispatch::Session::CookieStore et ActionDispatch::Flash -> donc pas jouable de mettre ça ds le flash

apres (attention j'ai adapté le wording depuis le screenshot) :

Capture d’écran 2025-10-30 à 8 06 45 AM

avant :

Capture d’écran 2025-10-30 à 8 08 26 AM

logs :

@timestamp controller controller#action method message
/!\Oct 29, 2025 @ 08:15:00.557 ContactController Contact#create POST [302] POST /contact (ContactController#create)
Oct 29, 2025 @ 08:13:25.584 ContactController Contact#index GET [200] GET /contact (ContactController#index)
Oct 29, 2025 @ 08:13:19.611 ErrorsController Errors#unprocessable_entity GET [422] GET /422 (ErrorsController#unprocessable_entity)
Oct 29, 2025 @ 08:13:19.590 Users::DossiersController Users::Dossiers#update_siret POST [422] POST /dossiers/27422382/siret (Users::DossiersController#update_siret)
Oct 29, 2025 @ 08:13:03.277 ContactController Contact#index GET [200] GET /contact (ContactController#index)
Oct 29, 2025 @ 08:12:52.216 ErrorsController Errors#unprocessable_entity GET [422] GET /422 (ErrorsController#unprocessable_entity)
/!\ Oct 29, 2025 @ 08:12:52.196 Users::DossiersController Users::Dossiers#update_siret POST [422] POST /dossiers/27422382/siret (Users::DossiersController#update_siret)
/!\Oct 29, 2025 @ 08:12:20.510 Users::DossiersController Users::Dossiers#brouillon GET [200] GET /dossiers/26415384/brouillon (Users::DossiersController#brouillon)
Oct 29, 2025 @ 08:12:13.532 Users::DossiersController Users::Dossiers#index GET [200] GET /dossiers (Users::DossiersController#index)
Oct 29, 2025 @ 08:12:13.391 RootController Root#index GET [302] GET / (RootController#index)
/!\Oct 29, 2025 @ 08:12:13.310 FranceConnectController FranceConnect#callback GET [302] GET /france_connect/callback (FranceConnectController#callback)

@codecov
Copy link

codecov bot commented Oct 30, 2025

Codecov Report

❌ Patch coverage is 95.45455% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 89.50%. Comparing base (4f1579d) to head (ca8d66b).
⚠️ Report is 35 commits behind head on main.

Files with missing lines Patch % Lines
app/controllers/errors_controller.rb 94.11% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #12262      +/-   ##
==========================================
+ Coverage   89.48%   89.50%   +0.02%     
==========================================
  Files        1338     1338              
  Lines       30285    30362      +77     
  Branches     6332     6359      +27     
==========================================
+ Hits        27101    27176      +75     
- Misses       3184     3186       +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mfo mfo changed the title ETQ usager, quand je soumet un formulaire depuis un onglet deconnecté, j'aimerais etre mieux guidé ETQ usager, quand je soumet un formulaire alors que je me suis reconnecté depuis un autre onglet, je n'ai pas de 422, je suis redirigé vers le formulaire initial ac le bon msg d'err Oct 30, 2025
@mfo mfo self-assigned this Oct 30, 2025
@mfo mfo added this to The Kanban Oct 30, 2025
@mfo mfo moved this to En cours in The Kanban Oct 30, 2025
…h message. We cannot use the default flash due to the config.exception_app that does not exposes writable cookies/session
Copy link
Member

@colinux colinux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cette page 422 peut être affichée dans d'autres contextes que déconnexion utilisateur (par ex un cookie csrf qui n'a pas été set, ou wipé pour d'autres raisons. On l'affiche aussi probablement pour certaines erreurs de validation qui ne sont pas bien attrapées côté instructeur ou admin.
Je me dis qu'idéalement il faudrait conditionner le message "vous avez été déconnecté(e)" avec le fait d'être encore connecté ou pas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: En cours

Development

Successfully merging this pull request may close these issues.

2 participants