Другие люди предоставили хорошие ответы с действительным предложением, чтобы не скрывать элементы, а вместо этого отключать их и давать некоторые подсказки по причинам.
Итак, я хотел бы посмотреть на это с другой точки зрения - но как скрыть некоторые элементы пользовательского интерфейса в случаях, когда пользователю не нужно их видеть, независимо от того, есть ли у него разрешения на определенные действия, связанные с элементами?
Например, допустим, пользователям какой-то роли предоставляется доступ к записям продавцов в системе.
Но тут бизнес-аналитик говорит: «Посмотрите, в этой форме есть выпадающий список со списком продавцов, и мы не должны позволять его видеть некоторым конкретным ролям».
Разработчик спрашивает: "Значит, мы просто снимаем разрешение "Читать продавцов" с этой роли, верно?" Но аналитик отвечает: «Нет! Эта роль все равно должна иметь возможность просматривать продавцов на странице «Продавцы». Это просто эта единственная форма, где мы должны скрыть список для некоторых ролей и показать его для некоторых других ролей».
Итак, разработчик добавляет разрешение «Показывать выпадающий список продавцов на форме X».
Упс, теперь у нас проблема. Доступ к одним и тем же данным контролируется двумя отдельными разрешениями. Теперь нам нужно придумать, как их совместить. А что, если есть несколько форм, в которых для некоторых ролей должен быть скрыт список продавцов? Как совместить это с "Прочитать список продавца"? Для нас, разработчиков, несколько ясно, что разрешение «Чтение» должно иметь более высокий приоритет, чем «Просмотр», поэтому, даже если пользователь может «Просмотреть» список, он все равно не должен его видеть (или видеть пустым или отключенным с помощью полезной подсказка), если у него нет разрешения «Чтение». Мы, разработчики и аналитики системы, это знаем. Но откуда системному администратору это знать? Должны ли мы научить его этому? Как мы можем гарантировать, что администратор не перепутает все эти «Просмотр» и «Чтение» для единого списка данных?
Как видите, все запутывается по одной причине — мы смешиваем разрешения на обработку данных с удобствами пользовательского интерфейса в списке разрешений ролей.
Я видел много проектов, в которых все становится беспорядочным, потому что разрешения на стороне сервера слишком сильно связаны с пользовательским интерфейсом, что требует проблем и возможных дыр в безопасности (потому что у вас есть несколько элементов в вашем редакторе разрешений ролей для одних и те же действия с одними и теми же данными) .
Разрешения относятся к доступу и операциям с некоторыми конкретными данными. Пользовательский интерфейс может реагировать на разрешения только согласованным образом во всей системе (отключение с помощью подсказок, скрытие и т. д.). Мы никогда не должны изобретать новые записи разрешений только для целей пользовательского интерфейса.
Теперь остается вопрос: а как на самом деле скрыть элементы пользовательского интерфейса для некоторых пользователей системы, чтобы не перегружать их огромным количеством всегда отключенных элементов? Одним из решений могут быть ролевые рабочие области. Если мы точно знаем, что пользователям какой-то роли никогда не понадобится доступ к определенным данным, мы создаем набор элементов управления пользовательского интерфейса, похожих на разрешения, но на этот раз мы не называем их разрешениями. И здесь мы можем проявить фантазию, даже позволив самим пользователям свободно настраивать свое рабочее пространство и выбирать, что они могут или не могут видеть. Конечно, разрешения всегда будут иметь наивысший приоритет, но они будут влиять только на данные и состояние элементов пользовательского интерфейса, а не на видимость.
Это мои два цента. К сожалению, я сам не работал над такой системой, где разрешения и параметры рабочей области пользовательского интерфейса четко разделены, потому что я всегда как-то слишком поздно прихожу к проекту, когда «ущерб уже нанесен». Но я надеюсь, что когда-нибудь у меня будет шанс. Я просто надеюсь найти хороший пример, как это сделать правильно, но почему-то поиски в Интернете не дают мне ничего полезного. Значит ли это, что никто другой не пришел к тем же выводам, что и я? Я не верю в это, кто-то в мире шаблонов корпоративного дизайна должен был давно заметить это несоответствие импеданса UI‹-> Permission.
person
JustAMartin
schedule
22.08.2017