ACL и группы клиентов

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

Модератор: ykolesnikov

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

ACL и группы клиентов

Сообщение ykolesnikov » 25 сен 2013, 14:04

Добрый день!
Пояаилась необходимость ограничить клиентам доступ к очередям в зависимости от группы клиентов. Сначала хотел это сделать по CustomerID, но потом вспомнил, что ряд подразделений сидит в разных зданиях и обслуживается разными территориальными группами агентов.
Отсюда вопрос.
Какой переменной/атрибутом воспользоваться в предложении Properties?
В мануале, как я понимаю, для агентов, есть конструкция:

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

Properties => {
            # current action match properties
            Frontend => {
                Action => ['AgentTicketPhone', 'AgentTicketEmail'],
            },
            # current user match properties
            User => {
                Group_rw => [
                    'hotline',
                ],
            },
А как для клиентов?
CustomerUser? Естественно с другим Action => ['CustomerTicketMessage']
С уважением Юрий Колесников
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 и группы клиентов

Сообщение merkushov » 25 сен 2013, 16:51

Меркушов Виктор, perl программист

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

Re: ACL и группы клиентов

Сообщение yuri0001 » 25 сен 2013, 17:11

О.К. спасибо, Виктор! :)
Завтра попробую.
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

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

Re: ACL и группы клиентов

Сообщение ykolesnikov » 30 сен 2013, 10:19

Создал ACL:

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

#### Ограничение для КЛИЕНТА выбора Очереди для заявки по CustomerUserGroup ##
    $Self->{TicketAcl}->{'051 ACL-Customer-Ограничение выбора очереди для КУИ'} = {
        Properties => {
            Frontend => {
               Action => ['CustomerTicketMessage']
                        },
            CustomerUser => {
                Group_rw => ['Cust_KUI'],
                            },
                      },
        Possible => {
            Ticket => {
                QueueID => ['21','2','41']
                      },
                    },
    };
#########################################################################
    $Self->{TicketAcl}->{'052 ACL-Customer-Ограничение выбора очереди для Терр_Уобр_УАГ_Укульт_Ленина_117'} = {
        Properties => {
            Frontend => {
               Action => ['CustomerTicketMessage']
                        },
            CustomerUser => {
               Group_rw => ['Cust_Cult_Ed_Arch'],
                            },
                      },
        Possible => {
            Ticket => {
                QueueID => ['24','2','41']
                      },
                    },
    };
Клиенты имеют права -rw в первой или второй группе, однако ограничения выбора очереди не происходит, видны все, их более 15.
В чем ошибка может крыться? :cry:
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 30 сен 2013, 15:05

Попробовал вариант с Queue вместо Ticket:

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

    $Self->{TicketAcl}->{'051 ACL-Customer-Ограничение выбора очереди для КУИ'} = {
        Properties => {
            Frontend => {
               Action => ['CustomerTicketMessage']
                        },
            CustomerUser => {
                Group_rw => ['Cust_KUI'],
                            },
                      },
        Possible => {
            Queue=> {
                QueueID => ['2','21','41']
                      },
                    },
    };
Все равно клиенту видны все очереди в списке.
Или я чег-то не понимаю? :oops:
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 01 окт 2013, 11:56

Решил исходную задачу через механизм групп клиентов с игрой правами -ro/rw, без использования ACL,
НО ВОПРОС: ПОЧЕМУ НЕ РАБОТАЕТ ACL ТАК И ОСТАЛСЯ :cry:
Хочется все-таки понять - на какие грабли налетел. Поддержка групп клиентов включена где только можно - и в АдминКонфиге и в Config.pm.
Клиенты включены в нужные группы, а все равно ACL не работает.
С уважением Юрий Колесников
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 и группы клиентов

Сообщение merkushov » 01 окт 2013, 14:23

А если так попробовать?

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

    $Self->{TicketAcl}->{'051 ACL-Customer-Ограничение выбора очереди для КУИ'} = {
        Properties => {
            Frontend => {
               Action => ['CustomerTicketMessage']
            },
            CustomerUser => {
                Group_rw => ['Cust_KUI'],
            },
        },
        Possible => {
            Ticket => {
                Queue => ['Raw', 'Junk']
            },
        },
    };
Меркушов Виктор, perl программист

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

Re: ACL и группы клиентов

Сообщение ykolesnikov » 01 окт 2013, 14:31

Оказалось и не решил. При установке прав клиенту в группе -ro, он в web-форме не видит очереди связанной с этой группой, видит заявку в своем списке заявок, но отвечать на вопросы агента - не может. А цель была - только ограничить список очередей клиенту при вводе заявки. Поэтому и смотрел в сторону ACL. Но не работает, хоть убей, никак. Даже неправильно не работает. :twisted:
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 01 окт 2013, 14:35

Не увидел сразу Вашего ответа Виктор!
Попробую позже, сейчас админ занят, а я к линуксовому серверу не имею доступа.
Единственный вопрос сразу. У меня имена очередей по-русски. Не будет ли облома?
Попробую и с теми и другими. :oops:
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 02 окт 2013, 13:26

До пробы дело не дошло. Пока админ занят поставил 3.3.0 beta3 на винде на своем ПК, чтобы посмотреть ACL Editor.
Впечатление неоднозначное, тем более, что описания его нигде в мануале нет (3.3)
Куда он пишет сохраненные ACL неясно и как они взаимодействуют с Config.pm тоже. Надо поискать. При экспорте он создает *.yml.htm - файл. При открытии его браузером или Notepad++ - видно только, что он как бы перевернут наоборот, т.е. сначала идут Possible, потом Properties.
Попробовал создать свой ACL как в примере, что приводил выше

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

    $Self->{TicketAcl}->{'051 ACL-Customer-Ограничение выбора очереди для КУИ'} = {
        Properties => {
            Frontend => {
               Action => ['CustomerTicketMessage']
                        },
            CustomerUser => {
                Group_rw => ['Cust_KUI'],
                            },
                      },
        Possible => {
            Ticket=> {
                Queue => ['2','21','41']
                      },
                    },
    };
и создавал именно так как написано. Однако, после сохранения, редактор поменял порядок операторов в Properties - то ли так и надо, то ли просто по алфавиту :o см. скриншот
ACL-Администрирование - OTRS-Action=AdminACL;Subaction=ACLEdit.png
ACL-Администрирование - OTRS-Action=AdminACL;Subaction=ACLEdit.png (35.18 КБ) 17276 просмотров
Концовку с Action в Possible - добавил специально, чтобы проверить, поменяет ли по алфавиту здесь - не поменял, однако.
Сижу чешу репу. Надо теперь поднастроить систему немного, чтобы попробовать как это в работе.
Кстати, после установки локально на винде, раньше Инсталлер, кидал в меню Пуск команды перезапуска, остановки и старта системы. Теперь их нет. Непонятно, как теперь перезапускаться? :oops:

PS. Нашел. Теперь ACL хранятся в базе OTRS в таблице ACL. Properties и Posiible по отдельности в blob - полях, в htm/yml - формате
Для актуализации в системе служит кнопка Deploy ACL's. О том, что синхронизация еще не выполнена при любом сохранении под заголовком страницы вешается сообщение о ее необходимости.
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 03 окт 2013, 13:26

Попробовал сегодня конструкцию Ticket => {Queue => [ - с русскими именами очередей.
На группу клиента стала реагировать, но список очередей пустой. :(
Попробовал связку Queue => {QueueID => [ с ID очередей - список выдает, но не имеющий никакого отношения к заданному списку. И для разных групп, указанных в ACL - одинаковый :lol: Не для членов этих групп - ограничения нет, все нормально.

Кстати, поменял местами операторы Frontend и Customer, как мне показал конструктор в 3.3. После этого и пошел некий прогресс. :lol:
Пока пытаюсь осознать.
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 10 окт 2013, 10:26

Попробовал сегодня конструкцию Ticket => {Queue => [ в 3.3.0 beta3 c использованием редактора ACL, но в чистом виде с использованием английских названий очередей. Конструкция работает. :D Теперь буду идти от обратного - вставлю очереди с русскими именами. О результате отпишусь.
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 10 окт 2013, 16:15

И с русскими (кириллицей) написанными именами в 3.3.0 все работает без танцев с бубном.
Пробую на тестовой системе в 3.2.10 - полный облом. Для клиентов групп указанных в ACL - список очередей - пустой. :twisted:
И decode_utf8 ставил и очередь переименовывал на аглицкие буквы - результат тот же.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

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

Re: ACL и группы клиентов

Сообщение yuri0001 » 10 окт 2013, 18:24

Кстати, хотелось бы еще как-то точнее понять смысл оператора - StopAfterMatch =>1.
Скажем, у меня есть последовательность ACL, которые задают допустимые наборы значений Категории заявки (динамическое поле) в зависимости от Типа заявки для Action - CustomerTicketMessage, затем похожая последовательность для AgentPhoneNew (пишу по памяти, надеюсь смысл понятен). Затем хочу создать еще набор для CustomerTicketMessage - но уже для ограничения набора очередей для клиента в зависимости от его принадлежности к определенной группе.
Отсюда вопрос где надо, а где нет - расставлять StopAfterMatch =>1 ?
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: ACL и группы клиентов

Сообщение alexus » 11 окт 2013, 11:16

StopAfterMatch надо ставить для правил по одному признаку Properties. Грубо говоря - это завершение прерывание проверки для исключения остальных действий. Надо рисовать логическую схему для моделирования процесса
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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

Re: ACL и группы клиентов

Сообщение ykolesnikov » 14 окт 2013, 09:47

О.К., спасибо! Теперь уложилось.
Продолжаю опыты с ACL.
Сегодня проверил последний вариант, чтобы исключить возможность влияния других ACL на мои опыты и опять - пустой список очередей.
Т.е. ACL отрабатывает фильтр по группам клиентов (т.к. для клиентов не входящих в проверяемую группу список очередей доступен и полный), а вот Possible, где указаны очереди при соответствии фильтру - убирает их все. Пробовал и с английскими именами очередей, то же самое.
Открыл заявку в Bug List - Bug#9807. Ответа пока нет.
Пришел к этому решению, когда увидел, что в 3.2.11 исправлена похожая ошибка для агентского интерфейса Bug#9764 - не абсолютно такая, но...
В 3.3.0 beta3 ставил опыт - работает.
Еще раз текст ACL:

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

#### Ограничение для КЛИЕНТА выбора Очереди для заявки по CustomerGroup ##
    $Self->{TicketAcl}->{'051 ACL-Customer'} = 
    {
    Properties => {
      CustomerUser => {
       Group_rw => ['Cust_KUI'],
      },
      Frontend => {
       Action => ['CustomerTicketMessage']
      },
    },
    Possible => {
      Ticket => {
       Queue => ['OTP::TER_CUI','Raw']
      },
    },
    StopAfterMatch => 1,
    };
#########################################################################
    $Self->{TicketAcl}->{'052 ACL-Customer'} = 
    {
    Properties => {
      CustomerUser => {
       Group_rw => ['Cust_Cult_Ed_Arch'],
      },
      Frontend => {
       Action => ['CustomerTicketMessage']
      },
    },
    Possible => {
      Ticket => {
       Queue => ['OTP::TER_UAG'),'Raw']
      },
    },
    StopAfterMatch => 1,
    };
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: ACL и группы клиентов

Сообщение alexus » 14 окт 2013, 21:30

http://bugs.otrs.org/show_bug.cgi?id=9764
Похоже баг пофиксили.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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

Re: ACL и группы клиентов

Сообщение yuri0001 » 14 окт 2013, 22:09

Я его видел, глубоко не копал, но там про агентский интерфейс, впрочем, завтра почитаю внимательно.
Я свой открыл, его передали тому же исполнителю http://bugs.otrs.org/show_bug.cgi?id=9807
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

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

РЕШЕНО: Re: ACL и группы клиентов

Сообщение ykolesnikov » 18 окт 2013, 11:47

Конечно, сам был дурак! :lol:
Зря ребят напрягал из OTRS. Конечно, они несмогли воспроизвести мою дурь! :roll:
В ACL было все правильно. Просто, у клиента не было прав в группах тех очередей, которые я им хотел назначить в списке в ACL - Queue => ...
Исправил права и все поехало! Просто в ходе многочисленных экспериментов потерял нить изменений. Документируйте ребята. Мне старому, вообще грех такие ошибки делать. :evil:
С уважением Юрий Колесников
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 и группы клиентов

Сообщение ykolesnikov » 25 окт 2013, 12:55

Кстати, проверил, вместе с этими ACL работу еще одной фичи - CustomerPanelOwnSelection в SysConfig in Ticket -> Frontend::Customer::Ticket::ViewNew.
Я ее использовал для замены названий очередей для клиентов, на более удобоваримые. Фактически, этот параметр, задает синонимы для названий очередей, при отображении их в интерфейсе клиента при вводе заявки. Когда разбирался с ACL, коллеги с буржуйского форума и те, которые разбирали мою заявку на Bugzill'a - рекомендовали ее отключить, что я и сделал. Теперь, перед переносом на боевой сервер, решил еще раз проверить, а будет ли работь с этим включенным параметром и оказалось, что прекрасно работает, т.е. синоним, видимо, подставляется уже после и виден только в выпадающем списке. Приятно. :D
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: ACL и группы клиентов

Сообщение alexus » 25 окт 2013, 18:57

ykolesnikov писал(а): проверил, вместе с этими ACL работу еще одной фичи - CustomerPanelOwnSelection
Юрий, ну Вы знаете, что я скажу сейчас про очереди на клиентском портале :lol: !
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

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

РЕШЕНО: Re: ACL и группы клиентов

Сообщение yuri0001 » 25 окт 2013, 19:40

Знаю, Алексей!
Я не настаиваю на своем решении, но если это кому-то надо, то это все, что могу. На этом и закрываем тему! :lol:
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

paver
OTRS Мастер
Сообщения: 507
Зарегистрирован: 22 апр 2015, 06:45
Откуда: Томск
Благодарил (а): 7 раз
Поблагодарили: 45 раз

Re: ACL и группы клиентов

Сообщение paver » 05 май 2015, 09:06

Немного некрофилии
ykolesnikov писал(а):Оказалось и не решил. При установке прав клиенту в группе -ro, он в web-форме не видит очереди связанной с этой группой, видит заявку в своем списке заявок, но отвечать на вопросы агента - не может. А цель была - только ограничить список очередей клиенту при вводе заявки.
Чтобы позволить клиенту делать заметки к своим заявкам, нужно дать ему право Note в группе/очереди.
Чтобы в интерфейсе настройки прав клиента на группу появилась эта опция, в config.pm следует добавить строку
$Self->{'System::Customer::Permission'} = [ 'ro', 'note', 'rw' ];
--
OTRS 6.0.22

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

Re: ACL и группы клиентов

Сообщение ykolesnikov » 05 май 2015, 09:37

Я уже писал, все это работает без предоставления лишних прав клиенту, достаточно, чтобы он был в группе users и имел там права -rw. У меня, по крайней мере, так.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

paver
OTRS Мастер
Сообщения: 507
Зарегистрирован: 22 апр 2015, 06:45
Откуда: Томск
Благодарил (а): 7 раз
Поблагодарили: 45 раз

Re: ACL и группы клиентов

Сообщение paver » 05 май 2015, 09:59

Думаю, вы ошибаетесь.

Зы дополнено, чтобы превзойти минимум в 25 символов
--
OTRS 6.0.22

Ответить