Страница 3 из 4

Re: Использование ACL

Добавлено: 11 май 2012, 12:06
ykolesnikov
Добрый день!
Для начала, посмотрите, у Вас точно клиенты второй группы не являются членами первой?
Может я и не прав, но попробуйте провести такой опыт. :oops: По идее, система должна просматривать ACL последовательно, один за другим и Ваша схема должна работать. Проверьте еще синтаксис очень внимательно, иногда, при мелких синтаксических ошибках, сообщений не выдается, но и правило не работает.
Если хардкодить, то, наверное, в этом же модуле CustomerTicketMessage.dtl (или - .pm)

Re: Использование ACL

Добавлено: 11 май 2012, 12:39
Ext
Дело в том, что клиенты второй группы точно являются и членами первой.
Первая группа - "users" - группа клиентов по умолчанию, все клиенты - члены этой группы. Но, некоторые и группы "users-dev". Как бы VIPы (технические такие VIPы). Я, просто хочу разобраться, мне потом понадобится реализовать еще функционал, связанный с разграничением прав пользователей. Через группы делать - самое логичное.

Re: Использование ACL

Добавлено: 11 май 2012, 14:11
ykolesnikov
Цель ясна и понятна. Вопрос понять глубже как работает ACL. Если разделить четко по группам без пересечений, и при этом Ваш ACL заработает - это одно решение, если не поможет - надо копать дальше, почему не работает.

Re: Использование ACL

Добавлено: 11 май 2012, 14:24
Ext
Дело в том, что хочется автоматизировать (максимально) процессы управления пользователями. Без пересечений групп - работает. Но, система позволяет привязывать пользователя к нескольким группам, соответственно, какая-то логика работы ACL должна быть, при пересечении групп. Сейчас же - совсем неясно, как быть. Если не устанавливать группу по умолчанию, то новый пользователь не привязан ни к какой группе, что неправильно. Если установить, то при привязке к специальной группе - происходит пересечение и ACL работает непонятно, при этом, я не могу отвязать клиента от дефолтной группы.

Re: Использование ACL

Добавлено: 11 май 2012, 14:30
Ext
Я так подозреваю, что в то же ограничение упрется попытка ограничить пользователей в возможности просмотра заявок компании (это могут делать только пользователи с определенной привилегией), да и ограничение на просмотр той или иной очереди...
Есть подозрение, что все эти проверки ACL происходят в одном месте, но я, пока, не смог найти где. Нужна помощь уважаемого сообщества! :-)
Ну, или какое-либо альтернативное решение.

Re: Использование ACL

Добавлено: 11 май 2012, 14:41
ykolesnikov
Как вариант, это конечно, не решение Вашего вопроса - пусть выбирают любой тип, а Вы фильтруйте (ACL) - заявки от тех, кому не положено в отдельную очередь и к ней автоответ - "Вас тут не стояло"

Re: Использование ACL

Добавлено: 11 май 2012, 15:04
Ext
Я хочу на основе типа заявки кидать их в отдельную очередь, с ограничением доступа и к ней, все это при создании самой заявки. Да, еще, как на основе ACL фильтровать? ACL работает странно, в некоторых случаях включались разрешения для "users-dev" для всех клиентов. Автоотвечать клиентам тоже не хочется, каждое обращение - деньги, нужно правильно обработать.

Re: Использование ACL

Добавлено: 11 май 2012, 15:53
yuri0001
Да, еще, как на основе ACL фильтровать
Если тип заявки Development, а группа не "user-dev"
Ну а насчет денег, то не все можно автоматизировать, хотелось бы, но чудес не бывает. Автоматизация ведь не бесплатная. OTRS хоть и бесплатный продукт, но сколько времени и зарплаты Вашей и Ваших сотрудников уйдет на кастомизацию?
Есть еще и регламенты. Надо прописать в договоре, какие категории клиентов могут заявлять нечто большее, чем инцидент. Кроме того, заявки на разработку попадают в понятие Управления Изменениями и там могут быть другие регламенты по их приему. Вариантов организации процессов множество и не все можно автоматизировать даже в "больших" системах.
Удачи Вам в поисках.

Re: Использование ACL

Добавлено: 11 май 2012, 15:59
Ext
Да, дело в том, что вопрос касается не чего-то космического. Группы пользователей и права доступа - основа управления хаосом :-)
Кстати, как в ACL указать - "Не принадлежит к группе"?
Заранее спасибо!

Re: Использование ACL

Добавлено: 11 май 2012, 17:12
yuri0001
Группы пользователей и права доступа - основа управления хаосом
Для агентов все сделано достаточно полно, что касается клиентов, то их надо "строить" (не гноить :D )
Я не силен в регулярных выражениях, но их там, точно, можно использовать, и во вторых в мануале есть пример с Possible Not - посмотрите, может прокатит. Больше, к сожалению, ничем помочь не могу. :oops:

Re: Использование ACL

Добавлено: 14 май 2012, 02:10
Ext
Разобрался, нужно было добавить StopAfterMatch => 1, в ACL для "users-dev"

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

$Self->{TicketAcl}->{'ACL-Customer-Ticket-Std'} = {
   Properties => {
      Frontend => {
         Action => ['CustomerTicketMessage'],
         },
      CustomerUser => {
            # ...
            Group_rw => [
                'users',
            ],
            # ...
        },
   },
   Possible => {
      Ticket => {
         Type => ['Incident'],
      },
   },
   
};

$Self->{TicketAcl}->{'ACL-Customer-Ticket-Dev'} = {
   StopAfterMatch => 1,
   Properties => {
      Frontend => {
         Action => ['CustomerTicketMessage'],
         },
      CustomerUser => {
            # ...
            Group_rw => [
                'users-dev',
            ],
        },
   },

   Possible => {
      Ticket => {
         Type => ['Incident','Development'],
      },
   },
};
Тогда, ACL Останавливается на группе "users-dev". Вроде, все работает корректно.

Re: Использование ACL

Добавлено: 14 май 2012, 04:31
yuri0001
Интересный параметр. :idea:
Спасибо, что написали, будем знать. :o

Re: Использование ACL

Добавлено: 14 май 2012, 13:20
Ext
Пришлось настроить среду разработки под Perl и отладчиком пройтись.
Мне не очень понравилось, как там ACL реализован. Логичнее было бы сделать так: Если, при пересечении правил какой-то параметр разрешен в любом правиле, он разрешен в итоге, если явно запрещен - запрещен в итоге. Тогда, действительно, можно сложные цепочки правил строить.
Вообще, просмотрев код возникли вопросы насчет квалификации программеров и архитекторов системы. Что-то доработать под себя - использовать можно. Для серьезных переработок (и настроек под себя) - проект не очень годится.

Re: Использование ACL

Добавлено: 17 май 2012, 12:47
Anna
Ext,

про переработку обоснуйте )
Активно перерабатываем и используем "под себя" аж с 2007 года.

А вот насчет квалификации программистов - в версии OTRS 3 и выше, пожалуй, соглашусь...

Re: Использование ACL

Добавлено: 17 май 2012, 13:57
alexus
Ext писал(а):Вообще, просмотрев код возникли вопросы насчет квалификации программеров и архитекторов системы. Что-то доработать под себя - использовать можно. Для серьезных переработок (и настроек под себя) - проект не очень годится.
Примеры - студию! Отправим в головную компанию с пожеланиями ;)

Re: Использование ACL

Добавлено: 19 май 2012, 12:47
Ext
Несколько, навскидку.
1. Работа того же ACL, я писал выше.
2. Обращение к разным сущностям системы по имени (хотя логичней было бы ввести понятие ключ - и обращаться по ключу, имя сейчас одно, завтра другое, а ключ можно сделать недоступным для редактирования через админ. интерфейс). Это вообще-то азы, там не надо в головную компанию писать, надо их отправлять учиться, в ВУЗ какой-нибудь.
3. Запутанная система сущностей, в принципе. Почему - то группы клиентов и группы агентов относятся к одному типу. Сущность "Компания" прилеплена с какого-то боку (видимо, в свое время для галочки).
4. При настройке надо вводить названия сущностей, в необходимые поля, хотя ничто не мешает сделать "источник" и вводить ссылку на сущность через выбор, одинарный или множественный.
5. Работа с БД - напрямую, в коде SQL запросы, не через нормальный адаптер. (Заодно, разработчиков отправить на курсы, пусть объяснят им, что такое шаблоны проектирования).

Это, так, на вскидку.
Результатом всего этого является то, что происходит здесь, на форуме. А именно, при проблеме - пользователю говорится, что он должен бизнес-процесс подстраивать под систему, хотя по большому счету должно быть наоборот. И это логично - система очень не гибкая, в следствие архитектурных недостатков. (Мое ИМХО, исключительно).
Поэтому, я и написал - ее можно использовать, если брать базовый функционал и немного подстраивать под себя. (Что мы и делаем, кстати.) Серьезно перерабатывать под себя - неэффективно, несмотря на статус опенсорс продукта, ну или надо обладать ресурсами mail.ru :-) .

Re: Использование ACL

Добавлено: 01 июн 2012, 08:26
ykolesnikov
Всем привет!
Увидел интересную вещь, доступную, начиная с версии 3.1.5 - Example 18.2. в http://doc.otrs.org/3.1/en/html/ch18s02.htm.
Позоляет использовать в ACL значения атрибутов заявок уже имеющихся в OTRS, а не вводимых вновь. :D

Re: Использование ACL

Добавлено: 10 окт 2012, 12:27
firebolt
Я вижу, здесь ведется активное обсуждение по ACL.

Только начинаю настройку системы под нужды компании, все пока кажется сложным. Я разобрался в принципе работы ACL (чего там разбираться: заявка по параметрам подошла - сделать c ней то и то), но вот c параметрами разобраться не могу. Посмотрел вот эту справку и вот какие вопросы появились... Один из них - откуда мне узнать ID объектов? State ID, Priority ID и т.д. Я понимаю, что хочу сделать простую вещь - настроить,чтобы по истечении времени на выполнение заявка переходила в другую очередь. Понял, что мне нужно использовать что-то наподобие

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

$Self->{TicketAcl}->{'ACL-Name-1'} = {
 # match properties
 Properties => {
 # current ticket match properties
 Ticket => {
  Queue => ['1 линия'],
  State => ['<истекло время решения>'],
 }
 },

 # return possible options (white list)
 Possible => {
 # possible ticket options (white list)
 Ticket => {
  Queue => ['2 линия'],
 },
 },
};
Но где мне взять это состояние заявки? Как его узнать?

Re: Использование ACL

Добавлено: 10 окт 2012, 15:18
ykolesnikov
Там в примерах перечислены возможные варианты использования. Вы можете опираться на имя очереди или на ее ID. Смысл в том, что имя очереди, в силу разных причин, Вы можете изменить, но ее ID останется прежним. Если Вы не собираетесь менять имена очередей, то, на мой взгляд, можно использовать любой из атрибутов. ID'ы можно посмотреть в соответствующих таблицах базы данных.
Вариант который Вы показываете в сообщении может работать только в случае, если у Вас есть такое имя состояния и кто-то его выставляет в это значение. Я могу ошибаться, но ACL вроде не работает с событиями, а может манипулировать лишь со значениями атрибутов

Re: Использование ACL

Добавлено: 11 окт 2012, 06:14
firebolt
ykolesnikov писал(а):Вариант который Вы показываете в сообщении может работать только в случае, если у Вас есть такое имя состояния и кто-то его выставляет в это значение. Я могу ошибаться, но ACL вроде не работает с событиями, а может манипулировать лишь со значениями атрибутов
Но ведь при истечении времени для самой системы эта заявка меняет состояние? Она перестает быть видной для клиента в его открытых заявках. И это получается работа не c событием. Меняется состояние заявки, значит теперь она удовлетворяет условиям и ее нужно обработать. Кстати, в примере она не перемещается. Ее просто можно будет переместить только в конкретную указанную очередь.

Re: Использование ACL

Добавлено: 11 окт 2012, 07:11
ykolesnikov
Заявка, сама не может сменить состояние. Это может сделать либо агент, либо система с помощью некоего задания (GenericAgent). В задании, инициированном неким событием, Вы можете указать что надо сделать - переместить в другую очередь, сменить состояние и т.д.
"О сколько нам открытий чудных
Готовят просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг,
И случай, бог изобретатель. "
(А.С. Пушкин)

Пробуйте :)
viewtopic.php?f=7&t=555

Re: Использование ACL

Добавлено: 06 апр 2013, 19:00
fendibober
Anna писал(а):У меня add empty value не указано
Подскажите пожалуйста, где её указывать?

Re: Использование ACL

Добавлено: 06 апр 2013, 20:39
yuri0001
Это указывается при создании динамических полей в АдминКонфиге (Администрирование-->Динамические поля) - опция для полей типа - dropdown

Re: Использование ACL

Добавлено: 03 ноя 2015, 07:30
bloodice
А как проверить не заданность DynamicFieldDateTime? Или любого другого параметра?
Есть 2 параметра DynamicFieldCheckbox и DynamicFieldDateTime. Нужно сделать что бы при отмеченном DynamicFieldCheckbox и не заданном времени DynamicFieldDateTime отображалась кнопка, во всех остальных случаях кнопка не должна выводиться.

Re: Использование ACL

Добавлено: 03 ноя 2015, 08:10
ykolesnikov
Прямого ответа дать не могу, но кто мешает провести ряд опытов и посмотреть в БД какие значения принимают эти поля при вводе/не вводе в них данных для каждого типа полей?