introduce AgentAgendas and refactor AgentPolicy
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