prevent non admin agents from inviting agents
Created by: adipasquale
https://trello.com/c/pEEDtUAn/1172-empecher-agents-non-admins-dinviter-dautres-agents
en préliminaire, j'ai enlevé la right bar de l'invitation d'agent. ça m'a obligé à redéfinir l'agent choisi dans le contexte du left_menu
pour ignorer @AGENT quand c'est un new record (sur la page invitations#new)
la reparation de la permission de cette page a été nettement plus compliqué que prévu :
- en fait la complexité venait principalement du fait que c'est un controlleur devise complètement isolé de l'application controller
- il a donc fallu redéfinir pas mal de méthodes comme
pundit_user
,policy_scope
etc pour pouvoir utiliser les policies pundit - j'ai rajouté les authorize où ce n'était pas fait : le
new
et lecreate
- pour appeler les pundit policies, dans ce cas, il faut le contexte d'une organisation. Or jusqu'ici ces routes d'invitations etaient non scopées. je les ai déplacées (en partie : le new et le create). Elles sont maintenant scopées dans la resource organisation (même si le chemin est bizarre, je n'ai pas envie de creuser ce détail).
- j'ai aussi légèrement revu la manière dont l'orga est ajouté au nouvel agent ou à l'agent existant pour que ça soit fait avant le authorize
- détail : je n'ai pas empêché l'accès à la page index aux agents non admin, juste limité ce qu'ils voient en enlevant les invitations. il n'y a pas de lien vers cette page pour l'instant mais je pense que ça pourrait être utile aux agents de voir leurs collègues