ACL, ACL Editor, ZZZACL.pm

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

ACL, ACL Editor, ZZZACL.pm

Сообщение ykolesnikov » 13 ноя 2013, 08:01

Добрый день!
Хотелось бы уложить в голове неочевидности с ACL.
К сожалению, ответов в мануале на эти вопросы не нашел.
Изначально все было просто - пиши текст ACL в Config.pm и нет вопросов, но не очень удобно, т.к. это все-таки главный конфиг и его править часто не очень хорошо.
Затем, начиная с версии 3.2 появилось упоминание в пресс-релизах, но не в мануале, что можно ACL писать в отдельный файл. Подробностей не было и руки не дошли. В 3.3.х появился ACL Editor - немного сырая, но удобная штука и без описания в мануале - as is :) .
Он создает ACL и, в принципе, все работает. Но когда полез смотреть что и куда он пишет пришел в недоумение.
Итак, появился файл - ZZZACL.pm в папке ...otrs\Kernel\Config\Files. Да, там записаны, сгенерированные ACL Editor, ACL, но как бы "перевернутые", т.е. сначала секция Possible/PossibleNot, а уже затем Properties. Кстати, аналогичный порядок предложений и в YAML-файле, который генерируется при экспорте ACL.

Теперь вопросы:
1. Иерархия файлов с ACL. Что я имею в виду - как я понимаю, все возможности записи и помещения ACL в файлы конфигурации остались, т.е. их можно писать по-прежнему в Config.pm или, скажем, оставить в нем ранее созданные, можно писать писать в некий отдельный файл (непонятно с каким названием и размещением, посмею предположить - ACL.pm, но незнаю куда положить его) и автоматически генерируемый редактором ZZZACL.pm.
Собственно вопрос что и в каком порядке читается и перекрывается, если есть ACL c одинаковыми именами (вдруг).
2. Если есть отдельный пользовательский файл ACL.pm, то в каком порядке должны записываться предложения ACL - как в ZZZACL.pm или как учили?
3. В описании апгрейда к 3.3.х - есть скрипт, который должен преобразовать ACL из Config.pm во что-то новое и куда-то поместить. Означает ли это, что данная процедура обязательна и в последующем, мы должны создавать и редактировать ACL единственным способом через ACL Editor.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

merkushov
OTRS Бывалый
Сообщения: 310
Зарегистрирован: 25 окт 2012, 15:06
Откуда: Воронеж
Поблагодарили: 2 раза

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение merkushov » 13 ноя 2013, 10:07

Для начала, некоторые высказывания, справедливые для последних версий OTRS:
- Всё что касается конфигурирования системы относится и к ACL.
- Структура конфига хранится в виде хэша (ассоциативного массива). Если быть точным, то это хеш-хэшей, т.е. вложенные друг в друга ассоциативные массивы. Одно из свойств ассоциативного массива, то что он не может хранить значения с одинаковыми ключами. Про хэши в Perl http://www.opennet.ru/docs/RUS/perl_hash/ (чтобы получить представление, достаточно прочитать первые несколько абзацев).
- Процесс чтения конфигов из файлов в объект происходит в методе new библиотеки Kernel/Config/Defaults.pm Туда можно посмотреть чтобы уточнить алгоритм.

Алгоритм чтения конфигурационных файлов следующий:
- читается Kernel/Config/Defaults.pm
- читается Kernel/Config.pm
- читается список файлов в каталоге Kernel/Config/Files/ с расширением pm. Файлы читаются отсортированные по алфавиту, при этом сначала читаются файлы, в имени которых есть упоминание слова 'Ticket'.
- опять читается Kernel/Config.pm

Теперь ответы:
1. Если есть ACL с одинаковым именем (ключом ассоциативного массива), то тот ACL, который прочитался последним перепишет ACL, который был прочитан раньше.
2. Ключи в ZZZACL.pm перевёрнуты, т.к. структуру сохраняет метод, который, на каком то этапе их сортирует. Положение ключей в структуре ассоциативного массива роли не играет. В Config.pm можно писать как удобно.
3. Скрипт bin/otrs.ImportACLsFromConfig.pl импортирует ACL из Config.pm в базу данных. Лучше, как мне кажется, это сделать. После этого, рекомендуют удалить все старые ACL'овы конфиги.
Меркушов Виктор, perl программист

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение ykolesnikov » 13 ноя 2013, 10:23

О.К. Спасибо за развернутый ответ, Виктор!
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение ykolesnikov » 14 ноя 2013, 11:02

Налетел на непонятную ситуацию с ACL Editor.
Или что-то делаю неправильно, или косяк (в смысле BUG).
Пытался создать ACL для процессной заявки, чтобы скрыть в TicketZoom лишние кнопки с помощью ACL Editor.
Для других параметров в Possible или PossibleNot, кроме Action - там проставляются конкретные значения, а для Action, при выборе его имени проставляется "галка". Если посмотреть в файл ZZZAcl.pm там это будет выглядеть примерно так:

Код: Выделить всё

  'Possible' => {
    'Action' => {
      'AgentTicketClose' => '1',
      'AgentTicketHistory' => '1',
      'AgentTicketLock' => '1',
      'AgentTicketMove' => '1',
      'AgentTicketNote' => '1',
      'AgentTicketOwner' => '1'
    }
  },
Для PossibleNot будет такая же картина с единичками.
Получается, что "0" проставить невозможно.
Если делаю руками в Config.pm - все работает как положено.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение ykolesnikov » 14 ноя 2013, 15:55

Есть соображения как правильно сделать это с помощью ACL Editor?
Сразу говорю, что синхронизацию делал, кэш чистил, Apache рестартовал.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

merkushov
OTRS Бывалый
Сообщения: 310
Зарегистрирован: 25 окт 2012, 15:06
Откуда: Воронеж
Поблагодарили: 2 раза

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение merkushov » 14 ноя 2013, 16:07

ykolesnikov писал(а):Получается, что "0" проставить невозможно.
Если там чекбоксы, то это распространённая ошибка при их обработке. Ошибка небольшая, я думаю её быстро исправят.
Меркушов Виктор, perl программист

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение ykolesnikov » 14 ноя 2013, 16:11

Будем надеяться. :lol: Или написать им в Bugzill'у?
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

merkushov
OTRS Бывалый
Сообщения: 310
Зарегистрирован: 25 окт 2012, 15:06
Откуда: Воронеж
Поблагодарили: 2 раза

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение merkushov » 14 ноя 2013, 16:20

Конечно стоит им написать!
Меркушов Виктор, perl программист

yuri0001
OTRS Бывалый
Сообщения: 492
Зарегистрирован: 11 фев 2011, 20:25
Откуда: Череповец

Re: ACL, ACL Editor, ZZZACL.pm

Сообщение yuri0001 » 14 ноя 2013, 17:12

Вот и ребята с аглицкого сайта то же сказали - http://forums.otterhub.org/viewtopic.ph ... 7f3#p89684
Завтра оформлю на работе 8-)
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

yuri0001
OTRS Бывалый
Сообщения: 492
Зарегистрирован: 11 фев 2011, 20:25
Откуда: Череповец

[РЕШЕНО] Re: ACL, ACL Editor, ZZZACL.pm

Сообщение yuri0001 » 15 ноя 2013, 17:44

Оформил с утра bug#9979 и к вечеру получил ответ.
Все оказалось до смешного просто, хотя на первый взгляд и неочевидно:
Когда выбираете Actions - они появляются столбиком в редакторе с зелеными "галками" против каждого имени. Это соответствует "1" в старой нотации. Если хотим закрыть соответствующую кнопку - следует кликнуть по галке и она будет заменена на красный крестик. Далее, думаю все понятно.
Ну вот не догадался я кликнуть по галке :lol: и даже дрогнувшей рукой не промахнулся чтоб попасть по ней и она бы перекинулась как царевна-лягушка. Ну а описания ACL- editor в мануале пока нет.

Теперь все здорово.
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

Ответить