Estrategia de seguridad del usuario de Wpf
FONDO:
Estoy creando una aplicación WPF (.NET 4.5 con MVVM-Light)
He creado roles de usuario en la base de datos que respalda la aplicación WPF donde los usuarios de la aplicación WPF tienen un rol asignado (es decir,usuario, administrador, propietario, administrador)
LO QUE QUIERO:
Mi cliente desea poder restringir lo que ven los usuarios y lo que pueden hacer los usuarios según su función. Hay algunas vistas que verán todos los usuarios, por lo tanto, algunos elementos visuales (cuadrículas, botones, etc.) deben estar ocultos o deshabilitados según la función del usuario.
LO QUE TENGO:
He creado un IUserService que se inyecta en todos los modelos de vista. Los roles que he creado tienen un campo que marca su nivel de seguridad (simplemente un número entero del 1 al 5). Quiero poder restringir la visibilidad de los elementos visuales basados en este número.
Por ejemplo, Mi plan es vincular la visibilidad del elemento a una propiedad booleana (utilizando un Convertidor boolToVisibility) en el modelo de vista (Nivel1, Nivel2, etc.) y esa propiedad devolverá verdadero si el nivel de usuarios coincide o es mayor que la propiedad nivel.
MIS PREOCUPACIONES:
Mi preocupación es que esto es mucho trabajo para implementar en cada modelo de vista y en cada elemento visual que se necesita. Además, ya tengo algunos elementos visuales que se ven afectados por otra lógica de negocios.
PREGUNTA:
¿Cuál es una manera eficiente de restringir la capacidad de los usuarios para "ver" elementos visuales basados en una estrategia de rol de usuario?
Estoy preparado para comenzar este trabajo, pero me encantaría escuchar algunas otras ideas de la comunidad sobre cómo se implementa la seguridad basada en roles del usuario en una aplicación WPF.