Стратегия безопасности пользователя Wpf
ФОН:
Я создаю приложение WPF (.NET 4.5 с MVVM-Light)
Я создал пользовательские роли в базе данных, которая поддерживает приложение WPF, где пользователям приложения WPF назначена роль (т.е.пользователь, менеджер, владелец, администратор)
ЧТО Я ХОЧУ:
Мой клиент хочет иметь возможность ограничивать то, что видят пользователи и что могут делать пользователи, исходя из их роли. Есть некоторые виды, которые будут видны всем пользователям, поэтому некоторые визуальные элементы (сетки, кнопки и т. Д.) Должны быть скрыты или отключены в зависимости от роли пользователя.
ЧТО У МЕНЯ ЕСТЬ:
Я создал IUserService, который вставляется в каждую модель представления. Роли, которые я создал, имеют поле, обозначающее их уровень безопасности (просто целое число от 1 до 5). Я хочу иметь возможность ограничить видимость визуальных элементов на основе этого числа.
Например, мой план состоит в том, чтобы связать видимость элемента с логическим свойством (используя конвертер boolToVisibility) в viewmodel (Level1, Level2 и т. Д.), И это свойство вернет true, если уровень пользователя соответствует или больше, чем свойство уровень.
МОИ ПРОБЛЕМЫ:
Меня беспокоит то, что это большая работа для реализации в каждой модели представления и на каждом визуальном элементе, который необходим. Кроме того, у меня уже есть некоторые визуальные элементы, на которые влияет другая бизнес-логика.
ВОПРОС:
Как эффективный способ ограничить способность пользователей «просматривать» визуальные элементы на основе стратегии роли пользователя?
Я готов начать эту работу, но я хотел бы услышать некоторые другие идеи от сообщества о том, как безопасность на основе ролей пользователя реализована в приложении WPF.