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

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

Модератор: ykolesnikov

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

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

Сообщение ykolesnikov » 21 мар 2012, 13:27

Вопрос с отображением в агентском интерфейсе так и висит.
Появился еще один.
У меня клиент не вводит приоритет, нет у него этого атрибута в форме. Но, хотелось бы в зависимости от категории заявки (Dynamic field), для одной из них (категорий) установить приоритет "5 - безотлагательный".
Не работает.
При вводе телефонной заявки агентом - там поле для ввода приоритета в наличии - все работает.
Какие здесь еще есть грабли, или это в принципе невозможно если поле в форме ввода отсутствует? :oops:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Anna
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 11 мар 2012, 14:06

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

Сообщение Anna » 21 мар 2012, 14:26

Юрий,

когда столкнулась с аналогичной задачей - пришла к выводу, что при помощи ACL это сделать нельзя, поэтому вносила изменения в код модулей.

catty
OTRS Новобранец
Сообщения: 13
Зарегистрирован: 21 мар 2012, 12:51

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

Сообщение catty » 21 мар 2012, 14:33

Добрый день!
Пишу ACL, чтобы ограничить доступные для выбора типы заявок, но система не воспринимает написанные по-русски, работает только для типа RfC.
Попробовала вариант с decode_utf8, описанный выше в этой теме, не помогает.
Подскажите пожалуйста, в чем моя ошибка и что можно сделать?
Благодарю заранее.

Anna
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 11 мар 2012, 14:06

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

Сообщение Anna » 21 мар 2012, 14:49

catty,

проверьте, что Вы верно задаете ACL и соблюдаете регистр символов.

use Encode;
$Self->{TicketAcl}->{'MyTest'} = {
Properties => {
Frontend => {
Action => ['CustomerTicketMessage'],
},
},
Possible => {
Ticket => {
Type => ['Incident','RfC', decode_utf8('МойТип')],
}
},
}

успешно работает.

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

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

Сообщение ykolesnikov » 21 мар 2012, 14:50

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

    $Self->{TicketAcl}->{'490 ACL-Customer-Types'} = {
        Properties => {
		     Frontend => {
			    Action => ['CustomerTicketMessage']
				},
		},
        Possible => {
            Ticket => {
                Type => ['01....Инцидент', 
			      '03....Инцидент::Авария', 
			      '02....Инцидент::Запрос на обслуживание',
			       '04....Запрос на Изменение(RfC)'
						], 
            },
        },
    };
Работает.
Я свои пишу в Notepad++. Там есть принудительная перекодировка файла в UTF-8 и после этого не пишу никаких Decode. :oops:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

catty
OTRS Новобранец
Сообщения: 13
Зарегистрирован: 21 мар 2012, 12:51

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

Сообщение catty » 21 мар 2012, 15:51

Anna,
для чистоты эксперимента скопировала ваш код - RfC выводит, МойТип нет (тип специально добавила).
Юрий, Notepad++ тоже не помог...
Не знаю, что и делать...

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

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

Сообщение ykolesnikov » 21 мар 2012, 16:06

А рестарт Apache?
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

catty
OTRS Новобранец
Сообщения: 13
Зарегистрирован: 21 мар 2012, 12:51

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

Сообщение catty » 21 мар 2012, 16:08

И Apache и прочих служб, ни в какую не видит))

catty
OTRS Новобранец
Сообщения: 13
Зарегистрирован: 21 мар 2012, 12:51

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

Сообщение catty » 22 мар 2012, 07:16

Anna, Юрий, спасибо вам большое!
Попробовала сегодня на свежую голову - все получилось (использовала и Notepad++ и decode одновременно).
Думаю, дело может быть также в версии системы (смотрела на тестовой 3.1.0, она воспринимает русский без дополнительных ухищрений - достаточно сохранить в utf-8).

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

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

Сообщение ykolesnikov » 22 мар 2012, 07:31

Доброе утро!
Ум - хорошо- два сапога - пара. :lol:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

aid
OTRS Новобранец
Сообщения: 60
Зарегистрирован: 06 мар 2012, 16:07

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

Сообщение aid » 23 мар 2012, 15:36

catty писал(а):Anna, Юрий, спасибо вам большое!
Попробовала сегодня на свежую голову - все получилось (использовала и Notepad++ и decode одновременно).
Думаю, дело может быть также в версии системы (смотрела на тестовой 3.1.0, она воспринимает русский без дополнительных ухищрений - достаточно сохранить в utf-8).
а у меня не идет :-(
...
Ticket =>
{
Type => ['Incident', 'Проблема'],
},
...
выводит только Incident. Так и не понял, какое решение верно?
ЗЫ Версия 3.1.1
FreeBSD 9.1, OTRS 3.2.2

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

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

Сообщение yuri0001 » 23 мар 2012, 15:56

Верны все, что правильны! :)
А если серьезно, убедитесь, что текст ACL сохранен в UTF-8, попробуйте использовать и decode.
Кроме того убедитесь в правильности написания наименования типа - всё должно быть абсолютно идентично, регистр, пробелы... что и в конфигах.
Удачи!
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

aid
OTRS Новобранец
Сообщения: 60
Зарегистрирован: 06 мар 2012, 16:07

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

Сообщение aid » 26 мар 2012, 15:03

yuri0001 писал(а):Верны все, что правильны! :)
А если серьезно, убедитесь, что текст ACL сохранен в UTF-8, попробуйте использовать и decode.
Кроме того убедитесь в правильности написания наименования типа - всё должно быть абсолютно идентично, регистр, пробелы... что и в конфигах.
Удачи!
как-то странно, сегодня на свежую голову (и неделю) заработал способ через np++, а с декодом вообще OTRS не запустилась при вкл компа :-(
спасибо!
FreeBSD 9.1, OTRS 3.2.2

shut2000
OTRS Новобранец
Сообщения: 9
Зарегистрирован: 10 дек 2011, 03:31

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

Сообщение shut2000 » 29 мар 2012, 08:38

Можно ли при помощи ACL реализовать следующее:
В зависимости от логина(группы) агент видит только определенные заявки
Например: логин - atest видит заявки 'Аппаратная часть',' Приложения' и т.д.

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

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

Сообщение ykolesnikov » 02 апр 2012, 13:01

Если еще актуально.
Основные "переменные" для Properties & Possible показаные в главе 18 английского мануала по 3.1 (Preference) -http://doc.otrs.org/3.1/en/html/ch18s03.html. Не все, но достаточно, чтобы понять что ACL опираются на атрибуты заявки или действия (Actions) OTRS.
Исходя из этого и надо их (ACL) формулировать. Если они есть, можно, как минимум, пробовать.
Т.е. если ваши понятия - "Приложения"... соотносятся с атрибутами заявки однозначно (Очередь, Динамическое поле, ...), наверное, можно. :oops:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Anna
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 11 мар 2012, 14:06

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

Сообщение Anna » 03 май 2012, 19:09

Юрий,
С двумя последующими ACL для динамических полей - наблюдается разница в работе для клиента и агента
Для клиента работает отлично, а для агента - во второе (зависимое) поле сразу подставляется первое допустимое значение из списка - вместо прочерка как у клиента и что более правильно.
В коде страницы AgentTicketPhone есть ветка

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

elsif ( $Self->{Subaction} eq 'AJAXUpdate' ) {
в этой ветке есть кусок построения JSON:

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

 my $JSON = $Self->{LayoutObject}->BuildSelectionJSON(
и буквально за пару строк до него - построение html-вывода динамических полей
В нем разработчики забыли поставить PossibleNone:

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

   # add dynamic field to the list of fields to update
            push(
                @DynamicFieldAJAX,
                {
                    Name        => 'DynamicField_' . $DynamicFieldConfig->{Name},
                    Data        => $PossibleValues,
                    SelectedID  => $DynamicFieldValues{ $DynamicFieldConfig->{Name} },
                    Translation => $DynamicFieldConfig->{Config}->{TranslatableValues} || 0,
                    Max         => 100,
# ---
# ANNA
# ---
                    PossibleNone => 1,
# ---
                }
            );
        }

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

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

Сообщение yuri0001 » 03 май 2012, 19:12

Добрый вечер!
Спасибо, Анна, попробую завтра. 8-)
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

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

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

Сообщение ykolesnikov » 04 май 2012, 07:54

Доброе утро!
1. Вы имели в виду AgentTicketPhone .dtl или .pm модуль?
2. Если .pm, то его можно/надо править по месту или как .dtl в кастомную папку и там править? Где тогда эта папка должна располагаться? :oops:

UPD. Да, нашел в .pm, второй вопрос остается. С .dtl все проверено, там в кастомную папку и все нормально. В .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

Сообщение ykolesnikov » 04 май 2012, 10:23

Заменил в оригинальном модуле, проверил, все работает. :D
Большое спасибо за помощь и поддержку.
Немного напрягает, что теперь надо помнить о правках при апгрейдах. :(
Достойно занесения в раздел HOWTOS
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Anna
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 11 мар 2012, 14:06

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

Сообщение Anna » 04 май 2012, 11:21

Юрий,

чтобы не терять изменения при обновлении, файлы .pm нужно копировать в папку Custom и править там. Для нашего случая
в /Custom/Kernel/Modules/

А правильнее даже так написать в коде:

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

# ---
# ANNA
# ---
                    PossibleNone => $DynamicFieldConfig->{Config}->{PossibleNone},
# ---

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

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

Сообщение ykolesnikov » 04 май 2012, 13:19

Спасибо, Анна, еще вопрос от тупого.
/Custom/Kernel/Modules/ - это явно линуксовый путь в котором я ничего не понимаю.
Для .dtl файлов у меня заведена кастомная папка внутри Kernel/Output/HTML - там есть Standard и моя Cmirit.
В свете этого кастомная папка для .pm файлов должна иметь то же имя и указываться в настройках или еще как? :oops:
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Anna
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 11 мар 2012, 14:06

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

Сообщение Anna » 04 май 2012, 15:46

Юрий,

в каталоге установки OTRS на одном уровне с папкой Kernel есть папка Custom.
В ней есть README.txt, в нем описано, что это за папка и как с ней работать:
In case you need to modify already existing framework file for customizations,
do this in the $OTRS_HOME/Custom/ directory.

Example:

You need to modify Kernel/System/Service.pm to add an customization, copy
Kernel/System/Service.pm to Custom/Kernel/System/Service.pm and modify it.
This module will get used.
То есть, если Вы хотите внести изменения в код файла Kernel/Modules/AgentTicketPhone.pm, то Вам нужно
1) создать в папке Custom папку Kernel, в папке Customer/Kernel - папку Modules
2) скопировать в папку Custom/Kernel/Modules файл AgentTicketPhone.pm
3) внести необходимые изменения именно в него

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

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

Сообщение yuri0001 » 04 май 2012, 17:32

О.К. Спасибо большое. Теперь все понятно. :D
С уважением
Ю. Колесников
OTRS 3.3.1, ITSM 3.3.1, SUSE 12, MySQL5

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

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

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

P.S.
В моей виндусовой инсталляции такой папки не оказалось. Но создал в соответствии с рекомендациями такую структуру и все работает. Еще раз спасибо.
С наступающим праздником Победы! :D
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Ext
OTRS Новобранец
Сообщения: 14
Зарегистрирован: 11 май 2012, 10:57

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

Сообщение Ext » 11 май 2012, 11:10

Коллеги,
нужна помощь и разъяснение насчет ACL.
Есть группа клиентов по умолчанию - "users" и есть особая группа - "users-dev". Для "users" нужно оставить только один тип заявки при создании новой - "Incident". Для "users-dev" - добавляется еще один тип - "Development". Все это касается именно создания заявки через клиентскую панель. Пытаюсь решить через ACL. Завожу 2 списка:

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

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

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

	Possible => {
		Ticket => {
			Type => ['Incident','Development'],
		},
	},
};
В результате, не важно относится клиент к группе "users-dev" или нет, выводится только тип - "Incident".
Помогите, пожалуйста. Если невозможно настроить при помощи ACL, подскажите, где похардкодить.

Ответить