-
Notifications
You must be signed in to change notification settings - Fork 3
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
Ajout du champ notification_email
pour les usagers, modifiable uniquement via l'api (par rdv-insertion)
#5003
base: production
Are you sure you want to change the base?
Conversation
…ultiple user with same email
@@ -6,6 +6,8 @@ class UserBlueprint < Blueprinter::Base | |||
:notify_by_email, :invitation_created_at, :invitation_accepted_at, :created_at, :case_number, :address_details, | |||
:logement, :notes | |||
|
|||
field :notification_email, if: ->(_field_name, _user, options) { options[:include_notification_email] } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A voir si on ne souhaite pas conditionner de cette façon, on pourrait toujours afficher le champ si il est rempli par exemple.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai fait un premier tour, je suis trop sous l'eau cette semaine car on est en sous-effectif, je reste bien chaud pour discuter des points soulevés, on peut s'appeler demain ou vendredi !
|
||
def change | ||
add_column :users, :notification_email, :string | ||
add_index :users, :notification_email, algorithm: :concurrently |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Un index partiel (WHERE NOT NULL
) mer semble très judicieux ici !
@@ -90,6 +91,11 @@ def email=(value) | |||
super(value&.gsub(".@", "@")&.gsub("..", ".")) | |||
end | |||
|
|||
def notification_email=(value) | |||
# On applique les mêmes corrections pour notification_email | |||
super(value&.gsub(".@", "@")&.gsub("..", ".")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je pense qu'on peut factoriser dans une méthode de classe du genre .sanitize_email(email)
puis appeler super(sanitize_email(value))
attrs -= User::FranceconnectFrozenFieldsConcern::FROZEN_FIELDS if @user&.logged_once_with_franceconnect? | ||
# Seul rdv-insertion peut enregistrer l'email de notification des usagers | ||
# Celui ci permet de notifier plusieurs usagers avec le même email | ||
base_attrs << :notification_email if rdvinsertion_request? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je trouve ça étonnant qu'on ait un champ uniquement dispo à RDV-I dans notre API publique. Quel est le risque de rendre ce champ utilisable par n'importe qui ?
Closes gip-inclusion/rdv-insertion#2065
Contexte
Nous avons besoin de pouvoir assigner à différents usagers le même email de notification lors de la création des comptes pour les invitations à prendre rdv dans rdv-insertion dans le cas d'un couple conjoint demandeur RSA ou dans le cas d'un déménagement (plusieurs comptes seront créés sur les différents territoires).
Un début d'implémentation avait été réalisé en septembre dernier ici et ici. Il n'a pas été poursuivi car cela avait des répercussions trop importantes, notamment le renommage du champ
email
enaccount_email
.Suite à cela une spec fonctionnelle et technique a été réalisée pour évaluer les options possibles.
Une discovery a été mené par @NesserineZarouri à ce sujet pour identifier les besoins coté RDVSP.
Il en est ressorti qu'il n'y a pas de besoin de cette fonctionnalité aujourd'hui coté RDVSP.
On a donc décidé de choisir l'implémentation minimale de la fonctionnalité tout en pouvant évoluer si besoin.
Solution
On ajoute le champ
notification_email
pour les usagers.Ce champ est modifiable uniquement via l'api et seulement pour les clients qui utilisent le shared secret (uniquement rdv insertion).
Dans le front on affiche l'email de notification dans la show de l'usager si celui ci existe pour que les agents rdvi connectés à rdvsp puissent avoir l'information.
Dans l'edit du formulaire de l'usager il n'y a pas de changement. Si un email est renseigné celui ci prendra la valeur du champ
email
et un callback effacera le champnotification_email
de l'usager.Les mailers sont modifiés pour utiliser l'email ou le notification_email en fonction de celui qui est rempli.
Techniquement
J'ai hésité à ajouter de nouveaux endpoint create et update au
Api::Rdvinsertion::UsersController
. Au final j'ai préféré modifierApi::V1::UsersController
afin d'éviter de la duplication de code qui pourrait poser problème si on doit un jour mettre à jour ces méthodes.