Estratégia de Segurança do Usuário Wpf
FUNDO:
Estou criando um aplicativo WPF (.NET 4.5 com MVVM-Light)
Eu criei funções de usuário no banco de dados que faz o backup do aplicativo WPF, onde os usuários do aplicativo WPF têm uma função atribuída (por exemplo,usuário, gerente, proprietário, administrador)
O QUE EU QUERO:
Meu cliente quer restringir o que os usuários veem e o que os usuários podem fazer com base em sua função. Existem algumas visualizações que serão vistas por todos os usuários, portanto, alguns elementos visuais (grades, botões, etc.) devem ser ocultados ou desativados, dependendo da função do usuário.
O QUE EU TENHO:
Eu criei um IUserService que é injetado em cada viewmodel. As funções que criei têm um campo que marca seu nível de segurança (simplesmente um número inteiro de 1 a 5). Eu quero ser capaz de restringir a visibilidade dos elementos visuais com base nesse número.
Por exemplo, Meu plano é vincular a visibilidade do elemento a uma propriedade booleana (usando um boolToVisibility Converter) no viewmodel (Level1, Level2, etc) e essa propriedade retornará true se o nível de usuários corresponder ou for maior que a propriedade nível.
MINHAS PREOCUPAÇÕES:
Minha preocupação é que isso é muito trabalho para implementar em todos os modelos de visão e em todos os elementos visuais necessários. Além disso, eu já tenho alguns elementos visuais que são afetados por outras lógicas de negócios.
QUESTÃO:
O que é uma maneira eficiente de restringir a capacidade dos usuários de "visualizar" elementos visuais com base em uma estratégia de função do usuário?
Estou preparado para começar este trabalho, mas gostaria de ouvir algumas outras ideias da comunidade sobre como a segurança baseada em funções de usuário é implementada em um aplicativo WPF.