Страница 1 из 1

Переменные в ACL

Добавлено: 22 июл 2018, 12:18
Agrael
Здравствуйте коллеги! Не хватает компаний клиента, так как один сотрудник может работать сразу в 2-3 (и более) компаниях и приходится давать ему много учеток. Сейчас хочу обновиться с 5 до 6 версии и вернулся к этому вопросу. Собственно вопрос в конце этого сообщения.

Решил пойти следующим путем - создал 2 динамических поля (DynamicField):
  • Subdivision. Выпадающий список для заявки. В возможных значениях список подразделений.
  • Subdivisions. Multiselect - множественный выбор для учетной записи клиента. И возможные значения аналогично предыдущему полю.
В Config.pm замапил Subdivisions и теперь при редактировании учетки можно добавить пользователю подразделения.
Для отображения в заявке $Self->{'Ticket::Frontend::CustomerTicketMessage'}->{'DynamicField'} = {'Subdivision' => '2'};

Далее ACL
---
ConfigChange:
Possible:
Ticket:
DynamicField_Subdivision: []
ConfigMatch:
Properties:
Frontend:
Action:
- CustomerTicketMessage
Name: 100 Запретить подразделения
StopAfterMatch: 0
---
ConfigChange:
PossibleAdd:
Ticket:
DynamicField_Subdivision:
- '001'
ConfigMatch:
Properties:
CustomerUser:
DynamicField_Subdivisions:
- '001'
Frontend:
Action:
- CustomerTicketMessage
Name: 110 Разрешить подразделение 001
StopAfterMatch: 0
---
ConfigChange:
PossibleAdd:
Ticket:
DynamicField_Subdivision:
- '002'
ConfigMatch:
Properties:
CustomerUser:
DynamicField_Subdivisions:
- '002'
Frontend:
Action:
- CustomerTicketMessage
Name: 110 Разрешить подразделение 002
StopAfterMatch: 0

И собственно вопрос, над которым затупил. Можно ли сделать одним правилом как-то так:
---
ConfigChange:
Possible:
Ticket:
DynamicField_Subdivision:
- $Env{"DynamicField_Subdivisions"}'
ConfigMatch:
Properties:
Frontend:
Action:
- CustomerTicketMessage
Name: 100 Разрешить подразделения
StopAfterMatch: 0

???

Re: Переменные в ACL

Добавлено: 22 июл 2018, 13:14
alexus
Добрый день!

Разбираться в логике ACL, чтобы по ней восстановить бизнес-задачу - не слишком увлекательное занятие :) Вы опишите простыми словами, что и как вы планируете сделать и в чём вопрос.

Re: Переменные в ACL

Добавлено: 22 июл 2018, 14:40
Agrael
Ок, попробую.

Subdivision. Выпадающий список для заявки. В возможных значениях список подразделений.
Subdivisions. Multiselect - множественный выбор для учетной записи клиента. И возможные значения аналогично предыдущему полю.

Нужно с помощью ACL "скопировать" выбранные в учетной записи клиента значения (Subdivisions) в заявку (Subdivision).

Множеством правил получается, но подозреваю можно и одним.

Re: Переменные в ACL

Добавлено: 22 июл 2018, 14:55
Agrael
Почему я предполагаю, что это возможно?
https://forums.otterhub.org/viewtopic.php?t=12346
Здесь правда копируется не целый список, а всего лишь одна текстовая переменная с логином, но а вдруг и мою задачу можно так же...

Re: Переменные в ACL

Добавлено: 23 июл 2018, 13:09
alexus
В приведённом Вами примере, значение не копируется, а сравнивается. Что полностью соответствует логике ACL, которые могут лишь выполнять операции сравнения атрибутов тикета и на основании результата делаеть некоторые ограничения. Само словосочетание Access Control в ACL вполне логично определяет его суть.
А заполнение атрибута клиента в динамическое поле можно сделать - DynamicFieldFromCustomerUser::Mapping + Ticket::EventModulePost###950-DynamicFieldFromCustomerUser

Re: Переменные в ACL

Добавлено: 23 июл 2018, 14:42
Agrael
Спасибо, но вроде не то=((
Попробую еще раз, другими словами, в картинках.

Все возможные подразделения
Изображение

К примеру два из них выбрано в учетной записи клиента
Изображение

Re: Переменные в ACL

Добавлено: 23 июл 2018, 14:43
Agrael
Для тикета еще одно динамическое поле, с теми же значениями
Изображение

Итоговый спецэффект
Изображение

По поводу имеющихся на текущий момент ACL
100 Запретить подразделения - убирает в тикете из DynamicField_Subdivision все значения
Последующие ACL по одному их добавляют, в зависимости от выбранных значений в учетной записи клиента в DynamicField_Subdivisions

Но хотелось бы не по одному, а одним Possible добавить выбранные DynamicField_Subdivisions в DynamicField_Subdivision

Re: Переменные в ACL

Добавлено: 23 июл 2018, 14:52
Agrael
Бывает так: один управляющий на несколько магазинов, одна заведующая на несколько аптек :roll: ...
А кастомизация зло - при обновлении все накастомизированное надо как минимум внимательно просмотреть, а в большинстве случаев перекастамизировать...

Ссылка на картинки в Яндекс.Диске (для тех, кто будет читать топик, когда вставленные картинки умрут): https://yadi.sk/d/lcVY0avS3ZUVvi

Re: Переменные в ACL

Добавлено: 26 июл 2018, 23:12
alexus
ACL выбирать значения не умеет, он может их только ФИЛЬТРОВАТЬ.