Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correctif pour les tokens envoyés dans les sms aux responsables #3183

Merged
merged 12 commits into from
Dec 19, 2022

Conversation

victormours
Copy link
Contributor

@victormours victormours commented Dec 14, 2022

Les sms envoyés aux responsables n'avaient pas de token. Voir https://sentry.incubateur.net/organizations/betagouv/issues/15798/?environment=production&query=is%3Aunresolved (une cinquantaine d'occurrences par jour)

Pour la spec, j'ai pas vraiment trouvé de test qui faisait vraiment des vérifications sur les sms au niveau intégration, donc je me suis positionné à ce niveau, vu qu'on est vraiment sur du bug difficile à voir autrement qu'en intégration.

Le fix est de s'assurer qu'on génère bien un token pour le user qui est notifié, et pas le user qui participe (et de faire la vérification correspondante au moment de l'authentification).

En regardant les tests de plus près, je me suis rendu compte que c'était pas évident de tester que le bon lien était envoyé, et qu'une bonne modification à apporter pour éviter ce genre de bug à l'avenir c'est de rendre le token obligatoire dans le lien envoyé par sms. En plus ça économise quelques caractères dans le sms.

@victormours
Copy link
Contributor Author

Vu les tests qui échouent, je vais tenter une autre approche

@victormours victormours marked this pull request as draft December 15, 2022 09:23
@victormours victormours marked this pull request as ready for review December 15, 2022 14:50
Copy link
Collaborator

@aminedhobb aminedhobb left a comment

Choose a reason for hiding this comment

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

Merci @victormours pour le fix et pour les tests 🙌 !
Je t'ai laissé un commentaire mais rien de bloquant.

Du coup pour ces cas-là (utilisateurs créés par les agents sans email), le token joue un rôle essentiel, lui seul permet à l'utilisateur de voir/modifier ses rdvs.
C'est probablement acceptable pour l'instant, mais à plus long terme on pourrait penser à une solution plus robuste, en faisant par exemple un matching sur le numéro de tel quand l'utilisateur s'inscrit sur la plateforme.

app/services/notifiers/rdv_base.rb Show resolved Hide resolved
app/services/notifiers/rdv_base.rb Show resolved Hide resolved
@@ -50,7 +50,7 @@ def delete_token_from_session_and_redirect(error_msg)
end

def invited_user
user_by_token || rdv_user_by_token&.user
user_by_token || rdv_user_by_token&.user&.user_to_notify
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ça me perturbe un peu de faire appel à une notion de notifications ici.
Mais c'est probablement juste le nom de la méthode, on pourrait peut-être avoir un alias du genre responsible_or_self, et/ou ajouter un commentaire ici précisant qu'il n'y a que le responsable qui peut voir et modifier le rdv.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

je crois que ce qui est particulier ici c'est que le user qui est notifié doit correspondre au user qu'on authentifie, donc c'est une bonne chose qu'on rende cette correspondance explicite en faisant appel à une notion de notification

app/services/notifiers/rdv_base.rb Show resolved Hide resolved
@victormours victormours merged commit bb8f031 into production Dec 19, 2022
@victormours victormours deleted the fix-responsable-sms-token branch December 19, 2022 16:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants