-
Notifications
You must be signed in to change notification settings - Fork 4
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
Permettre aux agents de se créer un compte sans organisation via Proconnect #5102
Permettre aux agents de se créer un compte sans organisation via Proconnect #5102
Conversation
30b7844
to
417486e
Compare
1f8a93d
to
cb488c2
Compare
Texte :
|
Texte : Il semblerait qu’il y ait un problème.
-> CTA « contacter notre équipe » |
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.
C'est fou de faire tomber autant de certitudes en si peu de code ! 🤯
Je n'ai pas d'objection à merger comme ça. 🚀
@@ -100,7 +100,7 @@ def timeout_in = 14.days # Used by Devise's :timeoutable | |||
# * it validates :email (the invite_key) specifically with Devise.email_regexp. | |||
validates :first_name, presence: true, unless: -> { allow_blank_name || is_an_intervenant? } | |||
validates :last_name, presence: true, unless: -> { allow_blank_name } | |||
validates :agent_services, presence: true | |||
validates :agent_services, presence: true, unless: -> { roles.none? } |
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 prédit que l'omelette ne se fera pas sans casser des œufs, mais moi aussi j'ai faim ! 😉
=> link_to("Migrer", new_super_admins_agent_migration_path(agent_id: page.resource.id), class: "button") | ||
- if page.resource.roles.none? | ||
= link_to("Ouvrir un compte", new_super_admins_compte_path(agent_id: page.resource.id), class: "button") |
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.
Trop malin ! 🤩
root to: "admin/organisations#index", as: :authenticated_agent_root, defaults: { follow_unique: "1" } | ||
root to: "agents/pages#home", as: :authenticated_agent_root |
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.
Beaucoup plus compréhensible et simple !
end | ||
|
||
before do | ||
agent.services.delete_all |
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.
Ah, on crée des services en cascade et donc on doit les supprimer ensuite, c'est ça ?
Je te propose cette implem d'un trait :no_service
dans la factory :
# [...]
invitation_accepted_at { Time.zone.parse("2020-07-30 10:30").in_time_zone }
transient do
service { build(:service) }
no_service { false }
trait :no_service do
no_service { true }
end
end
after(:build) do |agent, evaluator|
next if evaluator.no_service
next if agent.agent_services.any?
next if agent.services.any?
agent.services = if evaluator.service
[evaluator.service]
else
[build(:service)]
end
end
transient do
basic_role_in_organisations { [] }
end
# [...]
@@ -12,6 +12,9 @@ def call | |||
@agent = find_agent | |||
|
|||
if @agent | |||
if @agent.services.none? | |||
@agent.update(service_ids: @agent_params[:service_ids]) |
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.
Et si dans app/controllers/admin/agents_controller.rb:24
on utilise Agent.new(create_agent_params.merge(...))
, ça nous permet d'ajouter des conditions sur les services dans la policy. Je ne sais pas si on veut aller jusque là, c'est juste pour évoquer le sujet.
Disons que là je vois qu'on utilise des service_ids
qui ne sont jamais observés dans la policy, et donc ça fait sonner l'alerte, mais bon, c'est des service_ids
, pas de user_ids
. Mais quand même, ça peut être une faille d'escalade de droits dans le futur.
1855c67
to
6966d79
Compare
6966d79
to
cc0c1e8
Compare
Closes #5060
Contexte
voir #5060
On a 3 objectifs :
Solution
On autorise la création de comptes via proconnect, mais uniquement pour le domaine RDV Service Public.
On met à jour le formulaire d'ouverture de compte dans le super admin pour ajouter un agent (optionnel), et on permet de faire cette ouverture si un agent n'a pas d'organisation.
Dans la "state machine" des agents, c'est possible de ne pas avoir de compte dans l'état initial, mais pas dans un état intermédiaire ou final, parce que le compte de l'agent est supprimé s'il est retiré de toutes ses organisations.
L'agent créé ainsi n'a pas de service. On autorise l'ajout de services lorsque l'agent est créé par un super admin ou invité par un autre admin d'orga ou de territoire.
On va voir avec l'équipe déploiement comment on ajoute ces agents à leur crm.
Captures d'écran