betagouv / rdv-service-public

Prise de RDV pour les services publics
https://rdv.anct.gouv.fr
GNU Affero General Public License v3.0
12 stars 2 forks source link

Lever des exceptions pundit plutôt qu’AR lorsqu’un agent essaie d’accéder à une orga étrangère #4384

Closed adipasquale closed 2 days ago

adipasquale commented 4 days ago

corrige #4383

Lorsqu’un agent accède à une URL d’une orga à laquelle il n’a pas accès :

  1. on lève une exception ActiveRecord::RecordNotFound
  2. l’agent voit une 404
  3. on notifie Sentry

Cette PR propose de changer tout ce comportement :

  1. lever une exception Pundit::NotAuthorizedError
  2. rediriger vers la page précédente ou la home de l’agent avec un flash d’erreur "vous n’avez pas le droit"
  3. ne pas notifier sentry

Il me semble que c’est un meilleur comportement pour les agents et que cela nous fera moins de bruit dans Sentry

image

Followup

adipasquale commented 4 days ago

merci pour tes retours @victormours ! peut-être à discuter de vive voix aussi.

Je n’ai pas codé ce comportement de redirection 302 avec flash d’erreur, c’est celui par défaut qui se produit pour les Pundit::NotAuthorizedError cf Admin::AuthenticatedControllerConcern

Ce qui m’importe avec cette PR c’est effectivement de limiter le bruit sur Sentry.

Je n’ai pas d’avis fort sur ce qui devrait être le comportement dans ce cas :

  1. cacher la vraie erreur avec une 404
  2. exprimer clairement l’erreur de permissions que ce soit avec une 302 + flash ou autre chose

Mon avis faible va plutôt pour 2 :

@victormours Si tu as un avis fort pour 1 je peux changer cette PR dans cette direction

adipasquale commented 3 days ago

Discuté avec @victormours : en termes d’UX le comportement actuel 404 versus le changement de cette PR avec redirection et flash générique « vous n’avez pas le droit » se valent à peu près.

Or, le rétablissement du bruit des ActiveRecord::RecordNotFound avait justement été fait pour être alerté de problèmes d’UX améliorables. Cette PR va enlever ce bruit et on n’aura plus l’info qu’il faudrait améliorer cette UX.

C’est donc le moment de le faire :)

J’ai modifié le message du flash d’erreur pour ce cas précis :

Vous ne pouvez pas accéder à cette organisation

On peut itérer dessus assez facilement.

Au passage mes derniers commits :

adipasquale commented 1 day ago
image

10 down 🚀