À quelle couche (Modèle, Vue, Contrôleur) de MVC la logique d'autorisation doit-elle être gérée? Permettez-moi de clarifier cela un peu. Il est évident que l'interface utilisateur (View et Controller) doit pouvoir accéder aux autorisations pour afficher/masquer les composants et gérer le scénario d'autorisation refusée. Il semble également évident que les autorisations doivent être conservées dans la base de données par la couche Modèle. Mais qu'en est-il des règles d'autorisation "complexes" comme celle-ci?
Dans un système wiki/CMS que je développe, chaque utilisateur dispose d'un ensemble d'autorisations par page (voir, modifier, renommer, etc.). Pour les pages existantes, ces autorisations sont extraites de la base de données. Pour une nouvelle page, l'utilisateur est supposé avoir toutes les permissions possibles (au fur et à mesure de sa création/modification).Dans quelle couche les autorisations doivent-elles être appliquées dans MVC?
Un autre exemple serait la liste des pages:
L'utilisateur actuel ne devrait voir que les pages sur lesquelles il a l'autorisation de visionner dans la liste des pages.
Le contrôleur doit-il gérer cette logique? Ou est-ce que le contrôleur devrait seulement être responsable de l'appel d'une méthode GetPermissions() (ou GetPageList), et toute la logique pour le remplir est gérée dans le modèle?