при обновлении OTRS с 3.3 до 4.0
столкнулись с тем что система некорректно начала определять пользователей по емейлам, используем внешнюю базу, после выполнения проверок по базе, обнаружили в логах otrs
Take UserLogin (YYYXXX) from customer source backend based on (XXX@domain).
где XXX@domain правильный email с которого была отправлена заявка, а пользователь YYYXXX не правильно был определён системой, у него email YYYYXXX@domain
стали разбираться и наткнулись на очень интересную вещь
Kernel/System/CustomerUser/DB.pm
было в 3.3
Код: Выделить всё
my $PostMasterSearch = $Self->{DBObject}->Quote( $Param{PostMasterSearch}, 'Like' );
Код: Выделить всё
my $PostMasterSearch = '%' . $Self->{DBObject}->Quote( $Param{PostMasterSearch}, 'Like' ) . '%';
YXXX@domain и XXX@domain это одно и то же, но всё гораздо хуже, потому что
и YYYYYXXX@domain и X@domain одно и то же
и XXX@domain.com и XXX@domain.com.domain.ru одно и то же
чтобы вернуть поведение 3.3 необходимо исправить на
Код: Выделить всё
my $PostMasterSearch = $Self->{DBObject}->Quote( $Param{PostMasterSearch}, 'Like' );
может быть я упускаю какой то важный момент
ps: механизм проверки внешних ссылок на форуме хромает (пытался добавить емейлы для наглядности с .com в итоге не смог так как форум посчитал их внешними ссылками)