Ошибка времени выполнения: баг входа

Вход в систему (локальный вход с использованием электронной почты и пароля) не работает из-за следующей ошибки времени выполнения:

**publickeycredential не определен.**
passkeyConditionalLogin
installModifier
install
untrack
install

Каждый раз при нажатии кнопки входа в системе в консоли появляется это сообщение.

Среда: система только для приглашений, вход только по приглашению. Пытаюсь войти как администратор. Единственный способ попасть внутрь — использовать ссылку с одноразовой сессией в адресе электронной почты.

Спасибо за отчет, я посмотрю. Вы знаете, в каком браузере (или браузерах) это происходит?

1 лайк

Firefox (Tor). Я буду вам очень признателен, если вы сможете это исправить!

Повторение ситуации: только для зарегистрированных пользователей и только по приглашению.

Я тоже вижу ошибку в Firefox (не в Chrome):

1 лайк

Я думал, что схожу с ума! У меня была ошибка: PublicKeyCredential is not defined. У вас тоже доступен только приглашение и вход?

Есть какие-то новости? Для меня это довольно катастрофично.

Исправление скоро будет включено в основную ветку :+1:

2 лайка

Чёрт! Спасибо вам обоим и всем, кто занимается исправлением этой проблемы. Значит, я запускаю rebuild, и всё должно быть в порядке, да? Или discourse-setup тоже тянет данные из репозитория? Также, кажется, есть ошибка в шаблоне по умолчанию для onion-версии: ссылки на onion-адреса перенаправляют на страницу clearnet, и мне приходится запускать скрипт doctor из-за некоторых ошибок. Не думаю, что имеет смысл вручную отключать перенаправление в nginx, ведь остальные запросы всё равно будут идти через clearnet, верно?

Спасибо за коммит. Обычно когда его сливают?

Могу ли я технически добавить эти несколько строк сам, чтобы не увеличивать время простоя при пересборке? Где находится этот каталог приложения? И достаточно ли перезапуска лаунчера?

Это уже скоро, уже скоро. Я только что внёс изменение в исправление, это непросто, потому что условный UI для passkeys поддерживается браузерами неравномерно.

Существует API для проверки поддержки этой функции, описанное здесь: PublicKeyCredential: isConditionalMediationAvailable() static method - Web APIs | MDN, но вызов isConditionalMediationAvailable() ведёт себя по-разному в разных браузерах.

В Firefox он полностью не поддерживается. В Safari на iOS функция поддерживается, но вызов isConditionalMediationAvailable() возвращает false… поэтому мне пришлось изменить код, добавив проверку поддержки функции специально для Firefox.

Как только тесты пройдут, я внесу изменения в основную ветку, и они станут доступны примерно через час.

3 лайка

спасибо, да, я видел второй коммит… я вношу изменения локально, поэтому сейчас не буду пересобирать, а просто перезапущу контейнер. Это сработает, да? Ты только что делал это вручную локально?

Я только что внес изменения и перезапустил контейнер, но проблема не устранена. По-прежнему возникает ошибка “Publickeycredentials is not defined”.

Я только что объединил PR. Как только он попадёт в tests-passed, вы сможете пересобрать проект, и проблема должна быть решена. Я тестировал локально с использованием TOR и Firefox на macOS.

Следите за GitHub - discourse/discourse at tests-passed · GitHub. Как только коммит появится там, вы можете выполнить пересборку.

2 лайка

Мне нужно пересобрать проект? Почему не работает, когда я редактирую файлы локально и перезапускаю лаунчер? Я ведь только что сделал именно это.

Поскольку вы вносите изменения в исходные файлы, вам необходимо пересобрать ресурсы.

Как долго будет длиться обновление до его официального выпуска? В моём Android-приложении отображается эта ошибка.

Исправление уже объединено, и я вижу, что оно развернуто на meta.discourse.org. Можете ли вы воспроизвести эту проблему здесь на вашем Android-устройстве? Если да, пожалуйста, укажите версию браузера. Спасибо.

1 лайк