Доступность пунктов меню в клиенте BGBillingClient
Для каждого пользователя, либо для группы пользователей, ко всему прочему, можно настроить также и возможность скрытия ненужных по каким-либо причинам пунктов меню в клиенте BGBillingClient. Само описание меню хранится в файле BGBillingServer/data/menu.xml в виде дерева. Например:
...
<menu title=
"Сервис"
id=
"service"
>
<menu title=
"Журналы"
id=
"log"
>
<menuItem id=
"query"
className=
"bitel.billing.module.admin.bgsecure.ActionQueryLogViewer"
title=
"Журнал запросов"
/>
...
</menu>
</menu>
...
Каждый элемент меню однозначно характеризуется связкой <код меню>.<код пункта меню>. При наличии вложенности нескольких меню для определения конкретного пункта меню (т.е. листа дерева), используется только последний код меню, непосредственно включающего данный пункт. Например, пункту меню Сервис => Журналы => Журнал запросов соответствует ключ log.query (см. код выше). Пункты меню, соответствующие конкретному модулю имеют код вида <код модуля>. Например, для модуля Inet c кодом 12 код пункта меню будет равен 12. Пункты меню, соответствующие плагинам, прописаны в файле plugin.xml, который находится в корне jar-архива плагина. Данный архив находится в папке <BGBilling_server_path>/lib/app.
Для того, чтобы скрыть от пользователей или их групп часть меню или элементов меню, необходимо при редактировании конкретного пользователя или конкретной группы перейти на вкладку Пункты меню. Для добавления, удаления или редактирования правила на скрытие (или, напротив, отображения) какого-либо пункта меню или целого меню необходимо нажать на соответсвующие кнопки над таблицей с правилами.
Для добавления нового правила необходимо ввести код меню (или пункта меню), которого оно касается, а также указать показывается он или является скрытым. Для скрытия целого меню используется правило вида <код меню>, а для скрытия конкретного подпункта - <код меню>.<код пункта меню>.
Важно заметить, что правила для конкретного пользователя имеют более высокий приоритет, чем групповые. Например, для группы "Операторы" можно скрыть все меню Модули, но для оператора Васи сделано исключение, и оно будет отображаться.
При наличии же нескольких групп у пользователя сложение правил видимости действует по принципу "сложения по видимости". Т.е. если некий пользователь Петров принадлежит к двум группам (группе А и группе Б), причем в группе А действует правило невидимости пункта меню Модули, а у группы Б - пункта меню Плагины, то у Петрова все равно будут видны оба этих пункта. Потому что ни у одной из этих двух групп нет общих правил невидимости пунктов меню. Если же Петров будет принадлежать либо к группе А, либо группе Б (но не одновременно к обоим), то у него не будет виден пункт либо, соответственно, Модули, либо - Плагины.
Скрытие пунктов меню для пользователей не относится к системе BGSecure и носит чисто визуальный характер! При использовании альтернативных клиентов права действия "внутри" пунктов меню необходимо разграничивать при помощи системы BGSecure.