forum.bitel.ru
http://forum.bitel.ru/

[6.1] Расширение дерева прав в случае с service (CRM)
http://forum.bitel.ru/viewtopic.php?f=22&t=9446
Страница 1 из 1

Автор:  Phricker [ 16 июл 2014, 14:07 ]
Заголовок сообщения:  [6.1] Расширение дерева прав в случае с service

Возвращаясь к давно поднятой теме, которую я не могу сейчас найти, но ответа в которой так и не было.

Как удобно расширять дерево прав в случае с service?
Раньше я добавлял права
Код:
<action id="10002" mask="module=contract;action=UpdateContractPayment;pt=2" title="Занесение банковского перевода"/>
<action id="10003" mask="module=contract;action=UpdateContractPayment;id=new" title="Занесение платежа"/>
<action id="90" mask="module=contract;action=UpdateContractPayment" title="Изменение платежа"/>

и все работало.

Теперь у вас
Код:
<action id="1001"  mask="module=contract;action=UpdateContractPayment;id=new" title="Добавление платежа"/>
<service id="1001" name="PaymentService" operation="paymentUpdate" title="Добавление платежа"/>
<action id="90"  mask="module=contract;action=UpdateContractPayment" title="Изменение платежа"/>
<action id="91"  mask="module=contract;action=DeleteContractPayment" title="Удаление платежа"/>
<service id="91" name="PaymentService" operation="paymentDelete" title="Удаление платежа"/>


При этом одной и той же операцией считается и добавление нового платежа и изменение существующего.
Хотелось бы уйти от этого, т.к. люди бывает меняют задними числами платеж.
Как это реализовать через дерево прав?

Скрипты не предлагать, т.к. согласитесь есть разница между установкой и снятием галочки конкретному юзеру/группе юзеров, и описывание всех их в скрипте

Автор:  Ildar [ 16 июл 2014, 17:57 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service

Решение есть и часть его решения уже описывали. Чуть позже постараюсь описать.

Автор:  Phricker [ 16 июл 2014, 19:16 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Если вы про сообщение stark'а или сообщение Amir'а, то можно попробовать.

Ну и с разными примерчиками :oops:

Автор:  Phricker [ 21 июл 2014, 00:38 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Вечерний ап

Автор:  Ildar [ 21 июл 2014, 06:54 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Код:
<group title="Баланс" xmlns:balance="http://common.balance.contract.kernel.bgbilling.bitel.ru/">   
             <group title="Резервы">
                <service id="1012" name="ReserveService" operation="updateReserve" title="Изменение резервов"> <regexp path="balance:updateReserve/reserve/@id" value="\A[1-9]\d*"/> </service>
            </group>
</group>


Неймспейс как видно формируется на основе пакета бина. Вместо regexp можно использовать eq, одно для регулярных выражений, другое для обычного сравнения.
В path после префикса указываем метод/название обьекта бина(обычно совпадает с бином)/поле бина

Для того чтобы это работало необходимо, что бы в сервайсе у метода был указан @WebParam(name="reserve")( иначе придется обращаться argument0) и у бина в методе получения параметра стояла аннотация @XmlAttribute - обычно это так, но если что, пишите.

Автор:  Phricker [ 23 июл 2014, 19:37 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

А можно на примере?
В kernel.xml добавил в строчку
Код:
<group title="Договор" xmlns:contract="http://service.common.api.contract.kernel.bgbilling.bitel.ru/">

Дальше добавил правило для поиска договора
Код:
<service id="62" name="ContractService" operation="contractList" title="Поиск договора"/>

Теперь хочу запретить поиск скрытых договоров.

Методом тыка и анализом дебага лога клиента нашел
Цитата:
http://10.0.6.152:8080/bgbilling/executer/ru.bitel.bgbilling.kernel.contract.api/ContractService?wsdl -> {http://service.common.api.contract.kernel.bgbilling.bitel.ru/}ContractService:contractList
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns5:contractList xmlns:ns5="http://service.common.api.contract.kernel.bgbilling.bitel.ru/" xmlns:common="http://common.bitel.ru" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><arg2>-1</arg2><arg3>0</arg3><arg4>1</arg4><arg6>false</arg6><arg7>true</arg7><arg8>true</arg8><arg9 pageCount="0" pageIndex="1" pageSize="25" recordCount="0"/></ns5:contractList></S:Body></S:Envelope>

http://10.0.6.152:8080/bgbilling/execut ... rvice?wsdl -> {http://service.common.api.contract.kernel.bgbilling.bitel.ru/}ContractService:contractList
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns5:contractList xmlns:ns5="http://service.common.api.contract.kernel.bgbilling.bitel.ru/" xmlns:common="http://common.bitel.ru" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><arg2>-1</arg2><arg3>0</arg3><arg4>1</arg4><arg6>false</arg6><arg7>true</arg7><arg8>false</arg8><arg9 pageCount="0" pageIndex="1" pageSize="25" recordCount="0"/></ns5:contractList></S:Body></S:Envelope>



Какое правило необходимо в этом случае написать?
Код:
<service id="10001" name="ContractService" operation="contractList" title="Поиск скрытых договоров"> <regexp path="contract:contractList/??????????????????" value="true"/> </service>
<service id="62" name="ContractService" operation="contractList" title="Поиск договора"/>

Автор:  Phricker [ 23 июл 2014, 19:42 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Хотя Amir писал
Цитата:
Если где-то вместо имени агрумента arg0 arg1 - то надо нам, написать - это кто-то забыл указать аннотацию для метода.

Это к моему случаю относится?

Автор:  Ildar [ 23 июл 2014, 19:46 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Да, но я уже добавил аннотации. Но еще не выкладывал, думаю завтра выложу. Я там как раз затрагиваю тему contractList в kernel.xml.

Автор:  Phricker [ 23 июл 2014, 19:50 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Буду ждать тогда. Как раз работу с правами пользователей затеял, которую планировал после перехода на 6.1

Автор:  Phricker [ 23 июл 2014, 19:54 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

А обязательно было добавлять
в
Код:
<group title="Договор">

описание xmlns?
Код:
<group title="Договор" xmlns:contract="http://service.common.api.contract.kernel.bgbilling.bitel.ru/">

Автор:  Ildar [ 24 июл 2014, 09:56 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Желательно.
Но в общем случае должно работать как и раньше, без указания неймспейса, через ./*/параметр/@поле
Права поиска по договору выложены, можете посмотреть.

Автор:  Ildar [ 24 июл 2014, 10:59 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Вам надо будет так сделать.
Код:
<group title="Поиск по параметрам" xmlns:contract="http://service.common.api.contract.kernel.bgbilling.bitel.ru/">
      <service id="100041" name="ContractService" operation="contractList" title="Поиск скрытых договоров"> <eq path="contract:contractList/hidden/text()" value="true"/> </service>
</group>


Как видите hidden не является атрибутом(а является элементом xml, так как он не поле бина, а параметр запроса), и нам нужно сравнивать его содержимое, для этого используем text().
В принципе так же можно поступать и с полями бинов, если мы забыли указать аннотацию @XmlAttribute, но лучше сказать нам, чтобы мы ее добавили(а то когда мы ее все таки добавим ваше выражение работать не будет).

Автор:  madmax [ 28 ноя 2014, 23:57 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Если так прописать то ни тольок скрытые не показывает а вообще все договора.
А как запретить только скрытые не показывать
Ildar писал(а):
Вам надо будет так сделать.
Код:
<group title="Поиск по параметрам" xmlns:contract="http://service.common.api.contract.kernel.bgbilling.bitel.ru/">
      <service id="100041" name="ContractService" operation="contractList" title="Поиск скрытых договоров"> <eq path="contract:contractList/hidden/text()" value="true"/> </service>
</group>


Как видите hidden не является атрибутом(а является элементом xml, так как он не поле бина, а параметр запроса), и нам нужно сравнивать его содержимое, для этого используем text().
В принципе так же можно поступать и с полями бинов, если мы забыли указать аннотацию @XmlAttribute, но лучше сказать нам, чтобы мы ее добавили(а то когда мы ее все таки добавим ваше выражение работать не будет).

Автор:  madmax [ 05 дек 2014, 22:42 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

И как решить проблему

Автор:  Ildar [ 09 дек 2014, 19:32 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Извините, но у нас поменялся формат. В документации он приведен http://bgbilling.ru/v6.1/doc/ch01s22s02.html
Теперь для этого варианта будет так :
Код:
<service id="100041" name="ContractService" operation="contractList" title="Поиск скрытых договоров" expression="hidden"/>

Только вставьте его раньше данного кода в kernel.xml, лучше прямо перед ним
Код:
<service id="62" name="ContractService" operation="contractList" title="Поиск договора"/>
чтобы он первым делом прошел проверку по вашему правилу.

Если у кого есть еще вопросы смело спрашивайте.
p.s. Если я долго не отвечаю по данной теме, пишите пожалуйста в личку

Автор:  madmax [ 10 дек 2014, 00:53 ]
Заголовок сообщения:  Re: [6.1] Расширение дерева прав в случае с service (CRM)

Спасибо работает, вот только появилась другая проблема
http://forum.bitel.ru/viewtopic.php?f=22&t=10004

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/