Estou criando um sistema de menus em PHP e MySQL. Terei vários menus diferentes e cada menu terá um conjunto de itens de menu conectados a ele.
No site, eu também tenho permissões de usuário diferentes, alguns usuários podem ver todos os itens de menu e alguns itens estão ocultos para alguns usuários. Estou curioso para saber como lidar com as permissões de maneira limpa, permitindo que mais tipos de usuários no futuro sejam adicionados facilmente.
O que tenho até agora é algo como isto:
-------------------
|Menus
-------------------
|id| |display name|
-------------------
----------------------------------------------------------
|Menu items
----------------------------------------------------------
|id| |menu_id| |label| |link| |parent| |sort| |permission|
----------------------------------------------------------
Eu estou pensando que o permission
coluna poderia ser uma seqüência separada por vírgula que eu possa corresponder ao ID de permissão do usuário atual. Também poderia ser uma referência a alguma outra tabela que define todas as combinações possíveis das permissões existentes no momento.
Uma solução também poderia ser simplesmente armazenar vários itens de menu em que a única diferença é a permissão, embora isso levasse a armazenamento duplicado e talvez um pouco de administração.
Eu adoraria ouvir algumas reflexões sobre como estruturar isso e o que poderia ser considerado limpo, dinâmico e ruim.
Obrigado.