Разграничение прав действий

Материал из BiTel WiKi

Перейти к: навигация, поиск

Разграничение прав действий

Например: Хотим выделить действия "Начисление по всем договорам по VPN" и "Начисление по одному договору VPN". Находим соответствующие запросы:

http://192.168.169.3:8080/bgbilling/executer?
mail=bakirov_t%40ufanet.ru&
module=dialup&
action=RecalculateSessions&
date2=30.04.2008&
contracts=26019&
mid=16&
groups=0&
date1=01.04.2008&

http://192.168.169.3:8080/bgbilling/executer?
mail=bakirov_t%40ufanet.ru&
module=dialup&
action=RecalculateSessions&
date2=30.04.2008&
mid=16&
groups=0&
date1=01.04.2008&

В dialup.xml находим соответствующее действие:

<action id="27" mask="module=dialup;action=RecalculateSessions" title="Начисление"/>

Параметр contract будет меняться поэтому используется REGEXP ( префикс R: )

module=dialup;action=RecalculateSessions;contract=R:\d+"

В результате имеем dialup.xml

<action id="10003" mask="module=dialup;action=RecalculateSessions;contracts=R:\d+" title="Начисление по конкретному договору"/>
<action id="27" mask="module=dialup;action=RecalculateSessions;" title="Начисление по всем договорам"/>

Права доступа к выбранным параметрам объектов заданного типа

Необходимо разграничить доступ к редактированию и удалению текстовых и списковых параметров объектов заданного типа (в нашем примере, "ЛВС у клиента"), а также к изменению справочников для этих списковых параметров.

Запускаем клиент биллинга в отладочном режиме, открываем договор, пробуем создать объект типа "ЛВС у клиента" и пробуем редактировать его текстовые и списковые параметры, клонировать его, переместить в другой договор и удалить. Затем переходим в "Справочники/Объекты/Значения списков" и пробуем добавлять, редактировать, удалять значения необходимых списковых параметров.

Из отладочного журнала клиента биллинга получаем соответствующие запросы:

...
http://192.168.169.3:8080/bgbilling/executer?module=contract.object&param=25&action=ListParamValueGet&object=113671&
...
http://192.168.169.3:8080/bgbilling/executer?id=0&module=contract.object&action=ObjectUpdate&type=5&cid=14458&
...
http://192.168.169.3:8080/bgbilling/executer?module=contract.object&param=26&value=&action=TextParamValueUpdate&object=113671&
...
http://192.168.169.3:8080/bgbilling/executer?id=0&title=123&module=contract.object&param_id=27&action=ListValueUpdate&
...
http://192.168.169.3:8080/bgbilling/executer?id=4050&module=contract.object&action=ListValueDelete&

Вставляем свои действия в kernel.xml перед "более общими" действиями:

...
<group title="Объекты">
    <action id="219" mask="module=contract.object;action=ObjectTable" title="Про
смотр объектов договора"/>

    <action id="220" mask="module=contract.object;action=ObjectParamTable" title
="Просмотр значений параметров объекта"/>
    <action id="10000" mask="module=contract.object;action=ObjectUpdate;type=5" title="Изменение периода и названия объекта 'ЛВС у клиента'"/>
    <action id="221" mask="module=contract.object;action=ObjectUpdate" title="Изменение периода и названия объекта"/>
    <action id="10001" mask="module=contract.object;action=ObjectDelete;type=5" title="Удаление объекта 'ЛВС у клиента'"/>
    <action id="222" mask="module=contract.object;action=ObjectDelete" title="Удаление объекта"/>

    <action id="10002" mask="module=contract.object;action=TextParamValueUpdate;param=26" title="Изменение в объекте текстового параметра 'Имя сети (SSID)'"/>
    <action id="10003" mask="module=contract.object;action=TextParamValueUpdate;param=28" title="Изменение в объекте текстового параметра 'Ключ шифрации'"/>
    <action id="10004" mask="module=contract.object;action=TextParamValueUpdate;param=29" title="Изменение в объекте текстового параметра 'Логин/пароль для управления устройством'"/>
    <action id="10005" mask="module=contract.object;action=TextParamValueUpdate;param=30" title="Изменение в объекте текстового параметра 'Серийный номер'"/>
    <action id="10006" mask="module=contract.object;action=TextParamValueUpdate;param=31" title="Изменение в объекте текстового параметра 'MAC-адрес'"/>
    <action id="223" mask="module=contract.object;action=TextParamValueUpdate" title="Изменение текстового параметра объекта"/>
    <action id="224" mask="module=contract.object;action=DateParamValueUpdate" title="Изменение дата параметра объекта"/>
    <action id="225" mask="module=contract.object;action=AddressParamValueUpdate" title="Изменение адресного параметра объекта"/>
    <action id="10007" mask="module=contract.object;action=ListParamValueUpdate;param=24" title="Изменение в объекте спискового параметра 'Модель устройства'"/>
    <action id="10008" mask="module=contract.object;action=ListParamValueUpdate;param=25" title="Изменение в объекте спискового параметра 'Тип подключения'"/>
    <action id="10009" mask="module=contract.object;action=ListParamValueUpdate;param=27" title="Изменение в объекте спискового параметра 'Тип шифрации'"/>
    <action id="226" mask="module=contract.object;action=ListParamValueUpdate" title="Изменение спискового параметра объекта"/>

    <action id="10010" mask="module=contract.object;action=ObjectClone;type=5" title="Клонирование объекта 'ЛВС у клиента'"/>
    <action id="265" mask="module=contract.object;action=ObjectClone" title="Клонирование объекта"/>

    <action id="10011" mask="module=contract.object;action=MoveObject;type=5" title="Перемещение объекта 'ЛВС у клиента' в другой договор"/>
    <action id="252" mask="module=contract.object;action=MoveObject" title="Перемещение объекта в другой договор"/>
</group>
...
<group title="Значения списковых параметров">
    <action id="238" mask="module=contract.object;action=ListValueList" title="Просмотр значений спискового параметра"/>
    <action id="10012" mask="module=contract.object;action=ListValueDelete;param_id=24" title="Удаление значения спискового параметра 'Модель устройства'"/>
    <action id="10013" mask="module=contract.object;action=ListValueDelete;param_id=25" title="Удаление значения спискового параметра 'Тип подключения (ЛВС у клиента)'"/>
    <action id="10014" mask="module=contract.object;action=ListValueDelete;param_id=27" title="Удаление значения спискового параметра 'Тип шифрации'"/>
    <action id="239" mask="module=contract.object;action=ListValueDelete" title="Удаление значения спискового параметра"/>
    <action id="10015" mask="module=contract.object;action=ListValueUpdate;param_id=24" title="Обновление значения спискового параметра 'Модель устройства'"/>
    <action id="10016" mask="module=contract.object;action=ListValueUpdate;param_id=25" title="Обновление значения спискового параметра 'Тип подключения (ЛВС у клиента)'"/>
    <action id="10017" mask="module=contract.object;action=ListValueUpdate;param_id=27" title="Обновление значения спискового параметра 'Тип шифрации'"/>
    <action id="240" mask="module=contract.object;action=ListValueUpdate" title="Изменение значения спискового параметра"/>
</group>
...


Редактирование статического IP-адреса (фиксированного Framed-IP-Address) в модуле DialUp/VPN

Для задания статического IP-адреса используется соответствующая вкладка в свойствах логина клиента. Попробуем зайти на эту вкладку и выполнить разные манипуляции с IP-адресом. После каждой манипуляции нужно нажимать на "Ок" как внизу самой вкладки "IP-адрес", так и внизу родительской вкладки "Логины", иначе изменения не сохраняются на сервере биллинга. Следует также заметить, что информация о каждой вкладке ("Общие", "IP-адрес", "Атрибуты RADIUS" и т.д.) будет сохраняться с помощью отдельного запроса к серверу биллинга.

Нас интересуют только запросы, относящиеся к вкладке "IP-адрес". Найдем их в отладочном журнале клиента:

http://192.168.169.3:8080/bgbilling/executer?lid=129878&module=dialup&values=1.2.3.4%3Adefault%3A16.05.2008-&action=IPAddressUpdate&mid=16&
...
http://192.168.169.3:8080/bgbilling/executer?lid=129878&module=dialup&values=1.2.3.5%3Alocal%3A16.05.2008-&action=IPAddressUpdate&mid=16&
...
http://192.168.169.3:8080/bgbilling/executer?lid=129878&module=dialup&values=&action=IPAddressUpdate&mid=16&

Таким образом, любое изменение, в т.ч. и удаление статического IP-адреса, осуществляется с помощью действия IPAddressUpdate. Его и добавим в dialup.xml (к уже добавленным туда действиям по изменению RADIUS-атрибутов):

...
<action id="24" mask="module=dialup;action=UpdatePassword" title="Изменение пароля логина"/>
<action id="10000" mask="module=dialup;action=UpdateRadiusInfo;rp_mode=1" title="Установка режима RADIUS-атрибутов 'только локальный'"/>
<action id="10001" mask="module=dialup;action=UpdateRadiusInfo" title="Изменение RADIUS атрибутов"/>
<action id="10002" mask="module=dialup;action=IPAddressUpdate" title="Изменение IP-адреса"/>
<action id="30" mask="module=call;action=MoveLogin" title="Перемещение логина в другой договор"/>
<action id="31" mask="module=call;action=DeleteLogin" title="Удаление логина"/>
...
Личные инструменты