Тестирую у себя - работает всё прекрасно с разных аккаунтов.
У кого возникает подобная проблема с моим фиксом, просьба написать в лс для отладки.
@Anche отказался от предложения протестировать его случай.
Дело в том, что там не учитывается возможное отсутствие у пользователей некоторых данных (фамилии, юзернейма, фото профиля). При формировании хэша для проверки авторизации туда попадают пустые переменные (last_name и/или username и/или photo_url), из-за чего в конечном итоге хэши не сходятся. Чтобы это исправить, нужно добавить проверку и исключить пустые переменные для формирования хэша.
Отсюда получается, что у тех, у кого все это есть - спокойной могут авторизоваться, а те, у кого хоть что-то отсутствует (фамилия, юзернейм или фото) - получают ошибку.
@HooLIGUN мыслил в правильную сторону, но не до конца решил проблему.
Прикрепляю исправленную версию.
telegramlogin.tar
Еще момент по вашему хуку шаблона. Нежелательно переопределять целый участок кода, т.к. это делает невозможным дальнейшее изменение шаблона. Предлагаю использовать вместо replace способ add attributes и добавить там plugins.blackline в data-controller.
Небольшое предложение: захукать метод getAllowedCssClasses в классе \IPS\Text\Parser и добавить туда blacklineSpoiler, тогда можно будет избавиться от первого пункта. 🙂
Не требует, а рекомендует для следующих релизов. Минимальная версия PHP 7.4. Используйте её, чтобы не отваливались приложения и плагины, пока авторы не адаптируют под 8 версию.
Хукайте метод getAllowedCssClasses в классе \IPS\Text\Parser
А ну или в настройках можно так же указать разрешенные css-классы.
Тогда ничего не будет урезать при сохранении.
Я думаю стоит попробовать это. Пример:
this.around('addToCommentFeed', function (origFn, e, data) {
this.scope.find('[data-role="commentFeed"]').attr('data-role', 'oldCommentFeed');
this.scope.find('#yourElement').attr('data-role', 'commentFeed');
origFn(e, data);
this.scope.find('#yourElement').removeAttr('data-role');
this.scope.find('[data-role="oldCommentFeed"]').attr('data-role', 'commentFeed');
});
В теории комментарий будет добавлен в нужный элемент #yourElement.
Интересно, а если попробовать убрать атрибут data-role="commentFeed" с оригинального элемента и поставить на нужный до выполнения метода, а после вернуть на место, убрав со своего. 😂
Ну а если серьёзно, переопределять полностью методы можно. Если верить этому:
Нет никакой проблемы, может просто в обработчике формы не предусмотрено изменение скрытых полей на фронте. Сейчас не у компа, можете сами посмотреть это в \IPS\Helpers\Form метод values.
Тогда попробуйте получать значение с помощью \IPS\Request::i()->key. Если тоже вернёт изначально установленное значение, то попробуйте указывать скрытое поле в шаблоне.