Skip to content

introduce AgentAgendas and refactor AgentPolicy

Vincent Agnano requested to merge refactor/policy-admin-agents into master

Created by: adipasquale

refacto preliminaire a #1215

Nouvelle ressource AgentAgenda

Aujourd'hui les agendas agents apparaissent sur la route organisations/:orga_id/agents/:agent_id , et sont donc traités par AgentsController#show. Ca n'est pas très juste sémantiquement à mon avis : l'agent n'est pas vraiment défini par son agenda au sein d'une orga, mais plutôt par son rôle, son nom et prénom, son service etc. C'est d'ailleurs ce que permettent d'éditer les autres actions de ce controlleur, pas l'agenda.

Ca pose aussi un souci avec les policies : le policy_scope(Agent) n'est pas tout à fait le même. Pour l'instant, les agents non-admin ne peuvent pas voir la liste des autres agents et les éditer; supprimer etc, MAIS les agents non-admin peuvent voir et éditer les agendas d'autres agents de leur services. Ca fait que la policy Agent remplit un double rôle aujourd'hui et est donc un peu trop souple je pense.

J'introduis un modele non persisté AgentAgenda qui est juste une paire Agent - Orga, une policy attachée, et une route et un controlleur pour déplacer vers AgentAgendasController#show.

Refactos préliminaires communs de toutes les policies

  • nouvel héritage de DefaultAgentPolicy depuis ApplicationPolicy

Le but est de peu à peu supprimer les méthodes de DefaultAgentPolicy pour completement supprimer cette classe une fois toutes les policies refactored

  • @context.agent est aliasé current_agent
  • @context.organisation est aliasé current_organisation
  • @context.agent_role est aliasé current_agent_role

Ces changements permettront j'espère de plus facilement les remplacer et les supprimer au fur et à mesure - le but étant de ne garder que current_agent comme contexte

déplacement du require pundit/spec_helper vers un require commun

Refacto de AgentPolicy

  • introduction de specs
  • nouvel héritage depuis ApplicationPolicy
  • ignore l'organisation du contexte pundit_user, pour devenir absolue
  • déplacement du scoping des Agents à l'orga courante dans les controlleurs et vues

Merge request reports