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

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

Версия от 07:49, 17 февраля 2011; SinTeZWh1te (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

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

Например: Хотим выделить действия "Начисление по всем договорам по 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="Удаление логина"/>
...

Разграничение прав генерации отчетов в модуле Reports

Внимание! Данное решение/метод/статья относится к версии 5.1 и для других версий может быть неактуальна! Вам нужно самостоятельно поправить решение под свои нужды или воспользоваться помощью на форуме. Будем признательны, если внизу страницы или отдельной статьёй вы разместите исправленное решение для другой версии или подсказки что надо исправить.

Для разграничения доступа генерации отчетов необходимо в файл ./actions/reports.xml внести следующие изменения

приведен уже готовый файл с разбивкой по отчетам основного модуля

<?xml version="1.0" encoding="windows-1251"?>
<actions>
	<group title="Администрирование">
		<group title="Конфигурация модуля">
			<action id="1" mask="module=service;action=ModuleInfo" title="Просмотр конфигураций"/>
			<action id="2" mask="module=service;action=GetModuleConfig" title="Просмотр конфигурации"/>
			<action id="3" mask="module=service;action=UpdateModuleConfig" title="Обновление конфигурации"/>			
			<action id="4" mask="module=service;action=SetModuleConfig" title="Установка конфигурации"/>
		</group>
			<group title="Отчеты">
			<action id="5" mask="module=reports;report_id=kernel_contract_reward" title="Агентский отчет"/>
			<action id="6" mask="module=reports;report_id=kernel_contract_account_detail" title="Детализированный отчет по наработке"/>
			<action id="7" mask="module=reports;report_id=kernel_contract_tariff_account" title="Наработка по тарифам"/>
			<action id="8" mask="module=reports;report_id=kernel_contract_contract" title="Отчет по договорам"/>
			<action id="9" mask="module=reports;report_id=kernel_contract_account" title="Отчет по наработке"/>
			<action id="10" mask="module=reports;report_id=kernel_contract_payment" title="Отчет по платежам"/>
			<action id="11" mask="module=reports;report_id=kernel_contract_charge" title="Отчет по расходам"/>
		</group>
		<action id="12" mask="module=reports;action=Report" title="Генерация отчета"/>
	</group>				
</actions>

Чтобы избежать перетирания файла при обновлении необходимо в этой же папке создать файл reports.xml.orig

Выглядеть в администрировании это будет следующим образом
Файл:Admreports.png

Для добавления ограничения по другим отчетам необходимо добавлять строку

<action id="<%порядковый_номер%>" mask="module=reports;report_id=%название_отчета%" title="%имя_отображаемое_в_администрировании%"/>

название отчета можно взять из журнала запросов report_id => kernel_contract_charge

Личные инструменты