Estou com problemas para criar esse aplicativo baseado em função (ou permissão) quando se trata de descobrir como lidar com ações que diferem por função de uso.
Por exemplo, nosso controlador é App\ResourceController e nós editaremos o recurso. Existem duas funções: admin e user . O admin tem permissão para editar todos os campos do recurso, enquanto o user é restrito a alguns deles .
Eu estou lutando para descobrir a melhor abordagem entre a implementação de um único controlador que manipulará os dois casos ou o roteamento da solicitação para um controlador diferente para o mesmo recurso (como App\Admin\ResourceController , App\User\ResourceController ).
O problema com a abordagem de controlador único é que ele não está apenas mostrando uma forma diferente (com campos restritos) com base na função, mas também validando campos diferentes e muito mais. O corpo do controlador seria muito parecido com uma grande declaração if-else .
O controlador múltiplo tem a abordagem correta ou existe um diferente usando permissões em vez de funções?
Isso dependerá em grande parte do framework MVC que você está usando. O framework ASP.NET MVC no .NET, por exemplo, possui um sistema de permissões embutido (chamado roles). Você poderia usar um controlador com vários métodos:
Frameworks MVC com mais recursos terão algum tipo de sistema de permissões baseado em função que você pode usar. Realmente, o próximo passo é identificar o framework MVC que você está usando (ou decidir qual deles usar agora que você sabe que precisa de permissões baseadas em função) e fazer algumas pesquisas sobre como implementar essas permissões.