betagouv / rdv-service-public

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

Corriger bug modifier usager d’une autre orga dans la prise de rdv par un agent #4421

Open sentry-sentry-incubateur-net[bot] opened 2 months ago

sentry-sentry-incubateur-net[bot] commented 2 months ago

J’ai regardé et il semble que toutes les occurences proviennent non pas d’un usager "deleted" mais d’un problème de droits. Au passage je ne pense pas que ce soit judicieux d’avoir le filtre d’exclusion des soft deleted dans la policy, ça nous empêche de savoir facilement ce qui a causé l’erreur.

J’ai pu reproduire une occurence en incarnant un usager de prod :

  1. regarder l’agenda d’un autre agent
  2. commencer à prendre un RDV pour cet agent
  3. sélectionner un usager appartenant à une autre organisation (ça apparait dans le select, je ne sais pas exactement quels usagers on peut voir)
  4. cliquer sur l’icône d’édition => 404 invisible

ActiveRecord::RecordNotFound: Couldn't find User with 'id'=624065 [WHERE "users"."deleted_at" IS NULL AND "users"."id" IN (SELE...

Sentry Issue: LAPINS-166

ActiveRecord::RecordNotFound: Couldn't find User with 'id'=624065 [WHERE "users"."deleted_at" IS NULL AND "users"."id" IN (SELECT DISTINCT "user_profiles"."user_id" FROM "user_profiles" WHERE "user_profiles"."organisation_id" = $1)] (ActiveRecord::RecordNotFound)
  app/controllers/admin/users_controller.rb:187:in `set_user'
    @user = policy_scope(User).find(params[:id])
  config/initializers/cookie_overflow_notify.rb:10:in `call'
    @app.call(env)
...
(245 additional frame(s) were not displayed)
francois-ferrandis commented 2 months ago

C'est très intéressant ! Si j'ai bien compris, on ne peut éditer un usager que si il fait partie de notre orga, mais cet usager n'est ajouté à notre orga qu'au moment où l'on crée le RDV, ce qui signifie qu'on ne peut pas éditer les infos de l'usager pendant le wizard de création de RDV.

On touche à une question qui nous poursuit depuis un moment : faut-il permettre à des agents d'organisations distincte de pouvoir gérer une même fiche usager ? C'est une problème pour lequel la solution #3228 avait été mise en place, mais nous tentons actuellement de rétro-pédaler dans #3429.