Сообщение о создании новой учетной записи пользователя iTop

Хотелось бы, чтобы при создании новой учетной записи, пользователю, для которого она создана высылался бы логин и пароль. В триггерах на добавление объекта класса пользователь или внутренний пользователь вообще нет. Есть какое-нибудь решение данной задачи?

В голову приходит только свой модуль, который до сохранения учетки в базе будет отправлять письмо на почту соответствующего контакта. Делать это нужно именно до сохранения, потому что после сохранения пароль в открытом виде уже не получишь, в базе хранится его хеш.

Делается это немного сложнее, чем изменение модели данных, но разработчики это тоже предусмотрели. Вот этот мануал нужно покурить:
https://wiki.openitop.org/doku.php?id=2_0_3:customization:extensions_api.
Смотри iApplicationObjectExtension.

Добрый день
В версии iTop 2.1.0-beta-2045 в триггерах появилась возможность повесить уведомление на добавление пользователя. Сформировал триггер - все работает. Единственно никак не получается передать пароль пользователя в письме о регистрации. Подскажите, возможно ли как-то это сделать?

Решили проблему отправлением в письме пользователю ссылку на страницу восстановления пароля. Таким образом он сразу осуществляет смену на удобный ему пароль.
Если есть другие решения - буду рад услышать

Привет. Хотел то же самое предложить. Мне кажется, это оптимальный вариант. Более удобно было бы сразу присылать ссылку с персональным токеном, чтобы пользователю не приходилось вводить логин и ждать второго письма.
Думаю, все остальные решения будут через доп.модули.

Да, так было бы оптимально. Пытался реализовать данную схему, но не понял как из триггера можно сгенерировать токен или привязать какой-либо php скрипт. Не подскажите как реализовать данный вариант?

Боюсь, что из триггеров этого не сделать.
Нужно выяснить, какая функция отвечает за генерацию токена для восстановления пароля. После этого можно отследить создание новой учётной записи через интерфейс iApplicationObjectExtension и попробовать дёрнуть функцию, которая сгенерит и отправит письмо созданному пользователю.

Подскажите новичку как это делается? никак не могу понять. Создаю Тригер без фильтра, привязываю к Действию. Внутри в поле Кому прописываю SELECT Person WHERE id = email

При создании пользователя iTop письмо не приходит и EventNotificationEmail пишет No recipient

Что вы ожидаете получить в этом запросе?

Триггер срабатывает на каком-то объекте (в вашем случае на пользовате, видимо). Дальше запускается проверка фильтра, а затем поочередно действия. В фильте и действиях есть поля для OQL запросов. В этих запросах можно использовать значения параметров исходного объекта, того, на котором сработал триггер, через конструкцию :this->param. Вот этот param нужно заменить на что-то, что есть в объекте. А что именно есть в объекте, нужно посмотреть в модели данных в инструментах админа.

да, уже понял что этот запрос фигня )
принцип понял. Спасибо.

Есть где прочитать про написание фильтров под разные случаи?

Это не фильтры, а OQL запросы, похожи на SQL, только проще. Почитать тут есть: https://wiki.openitop.org/doku.php?id=2_2_0:oql:start.

чето я никак не могу сообразить как показать что именно этому юзеру нужно написать письмо.

пока остановился на этом SELECT Contact WHERE id= :this->email

как оно вообще работает ? как и откуда передается параметр email?

В поле “Кому” выбираются контакты, а не их емейлы.
Пример. Есть тикет, где в поле agent_id выбрана персона. Мы хотим его уведомить. На тикете срабатывает триггер. В действии триггера в поле Кому пишем: SELECT Person WHERE id = :this->agent_id. Выбери персону, идентификатор которой равен значению из поля agent_id этого тикета.

Ок, а откуда это ИД вытащить то можно? в админке его нет ни где

в базу лезть ?

Его не нужно вытаскивать. Увидев :this->agent_id, айтоп сам вытащит и подставит в запрос ИД персоны, указанной в тикете в качестве агента.

Ок.

прописал в поле Кому - SELECT Person WHERE id= :this->agent_id

создаю нового пользователя и EventNotificationEmail выдает мне
Error: Unknown attribute agent_id from class UserLocal

версия 2.2.1

При чем здесь новый пользователь? Я написал выше, что это пример применим к тикетам, поскольку в них есть поле agent_id. В учетной записи пользователя есть свое поле, где выбирается персона. Его название можно посмотреть в модели данных в административных инструментах, и его нужно укказывать в запросе.

Владимир, благодарю за терпение. С вашими комментариями хоть боле менее стало понятно как это зло работает