Cara, eu uso uma estrutura que ate hoje se adaptou a todos os tipos de necessidades em relacao a controle de acesso ao sistema. O esquema no geral, com toda a estrutura e funcionamento nao eh exatamente simples de entender, mas basicamente a ideia geral eh assim:
Crie uma tabela chamada “permissoes” ( o nome, logicamente, pode ser qualquer um ). Nessa tabela, coloque os camos “id_permissao”, “id_usuario” e “id_grupo”.
“id_permissao” tem que ser um campo texto ( varchar ), ja os demais pode ser numerico. Note que, se voce nao tiver controle por grupos, “id_grupo” nao eh necessario.
O lance agora eh simples: para cada local no sistema que voce desejar controlar o acesso, crie um id unico de permissao para tal local, e entao com base neste valor vc controla o acesso e seta as permissoes. Por exemplo, digamos que na tela de cadastro de clientes existam 3 abas: “Inserir”, “Visualisar”, “Relatorios”, e voce deseja restringir o acesso em cada uma dessas abas. Com base nisso, um exemplo de id para as permissoes poderia ser:
Tela de usuarios: tela_usuarios
Inserir: tela_usuarios_inserir
Visualisar: tela_usuarios_visualisar
Relatorios: tela_usuarios_relatorios
Veja, sao apenas nomes, e eh importante que eles seja unicos no sistema.
Por fim, voce faz a tela de controle se permissoes, onde todas as permissoes sao listadas. Entao, para o usuario em questao, voce seleciona quais permissoes ele pode ver e grava no banco.
Na hora em montar as telas/abas, basta voce verificar no banco quais dados ele tem acesso, com base no nome da permissao!
Eh isso, espero que lhe ajude.
Rafael