У нас есть веб-приложение, и его фронтэнд реализован с GWT/GXT. Пользователи могут принадлежать различным группам, и у этих групп могут затем быть различные полномочия. Полномочия являются довольно мелкомодульными, например, comment_create, comment_edit, comment_delete и comment_read.
Каков был бы лучший способ включить и отключить средства управления пользовательским интерфейсом на основе полномочий пользователя? У нас есть служебный метод, который возвращает булево значение с данным пользователем и названием разрешения. Но в данный момент каждое управление перенесено в выражении if, и это делает бит кода грязным.
Я не уверен, как это реализовать в GWT/GXT, но старый способ включения меню в MFC может быть местом для начала.
Для этого было отдельное сообщение ON_UPDATE_COMMAND_UI
, в котором вы указывали идентификатор меню и имя метода. Метод вызывался, и вы могли включить или отключить этот пункт меню в зависимости от вашей логики. В вашем случае это будет основано на идентификаторе пользователя. Это происходит на основе идентификатора меню и поэтому может быть настолько тонкой, насколько вам нужно.