Создание учётной записи не работает с discourse_encrypt

Здравствуйте,

После того как я в первый и во второй раз обновил систему вчера, регистрация перестала работать.

При нажатии на кнопку Создать аккаунт в модальном окне создания аккаунта появляется сообщение об ошибке в верхней части окна:

Произошла ошибка. Возможно, имя пользователя или адрес электронной почты уже зарегистрированы. Попробуйте ссылку «Забыли пароль».

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

Также у меня есть два обязательных пользовательских поля с типом confirmation, если это имеет значение.


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


Ещё одно изменение, которое я внес вчера, — это добавление следующей команды для очистки старых ресурсов :arrow_down_small:
(Я использую Digital Ocean Spaces):

Однако эта команда успешно выполняется при перестроении или обновлении.


Вот ссылка на сайт, где вы можете проверить ситуацию.

Буду благодарен за любую помощь или идею! Спасибо :slightly_smiling_face:

1 лайк

Я только что попытался зарегистрироваться и тоже получил ошибку (хотя при переводе я вижу: «Что-то пошло не так! Регистрация в настоящее время находится на техническом обслуживании! Пожалуйста, зайдите позже и попробуйте снова.»[1])

У меня это работает на Meta, так что это может помочь сузить круг поиска. Я попробую проверить, смогу ли я сломать свой тестовый сайт с помощью пользовательских полей и т. д. :+1:


  1. Valami hiba történt! A regisztráció jelenleg karbantartás alatt van! Kérlek, látogass vissza kicsit később és próbáld újra. ↩︎

1 лайк

Спасибо, что проверили :slightly_smiling_face: Да, я просто переписал сообщение об ошибке по умолчанию, чтобы предупредить пользователей, что проблема на нашей стороне. Извините, забыл упомянуть об этом. :confused:

Но это сообщение: login.something_already_taken

1 лайк

Я попытался зарегистрироваться по приглашению, и в итоге получил ошибку Internal Server Error :slightly_smiling_face:

В логах /logs появилась следующая ошибка:
Screenshot 2022-11-23 at 11.05.09

Информация
ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR:  null value in column "encrypt_pms_default" of relation "user_options" violates not-null constraint
DETAIL:  Failing row contains (5333, f, t, t, t, f, t, 10080, 300000, 2880, null, 2, f, 1, 1, f, 2, 0, t, null, {}, f, 0, 0, 1, 0, 0, f, null, f, null, f, null, 0, null, t, null, null, null, null, 3, null, 1, f, null, 0, null).
)
app/models/user.rb:1734:in `create_user_option'
app/models/invite_redeemer.rb:142:in `create_user_from_invite'
app/models/invite_redeemer.rb:208:in `invited_user'
app/models/invite_redeemer.rb:260:in `add_user_to_groups'
app/models/invite_redeemer.rb:226:in `process_invitation'
app/models/invite_redeemer.rb:55:in `block in redeem'
app/models/invite_redeemer.rb:53:in `redeem'
app/models/invite.rb:227:in `redeem'
app/controllers/invites_controller.rb:227:in `perform_accept_invitation'
app/controllers/application_controller.rb:413:in `block in with_resolved_locale'
app/controllers/application_controller.rb:413:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:368:in `call'
config/initializers/008-rack-cors.rb:25:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'
Трассировка стека
rack-mini-profiler (3.0.0) lib/patches/db/pg.rb:69:in `exec_params'

rack-mini-profiler (3.0.0) lib/patches/db/pg.rb:69:in `exec_params'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'

activesupport (7.0.3.1) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'

activesupport (7.0.3.1) lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract_adapter.rb:765:in `block in log'

activesupport (7.0.3.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract_adapter.rb:756:in `log'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:766:in `exec_no_cache'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql_adapter.rb:745:in `execute_and_clear'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:54:in `exec_query'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:132:in `exec_insert'

activerecord (7.0.3.1) lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `exec_insert'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:167:in `insert'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'

activerecord (7.0.3.1) lib/active_record/persistence.rb:496:in `_insert_record'

activerecord (7.0.3.1) lib/active_record/persistence.rb:1096:in `_create_record'

activerecord (7.0.3.1) lib/active_record/counter_cache.rb:166:in `_create_record'

activerecord (7.0.3.1) lib/active_record/locking/optimistic.rb:79:in `_create_record'

activerecord (7.0.3.1) lib/active_record/attribute_methods/dirty.rb:222:in `_create_record'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `block in _create_record'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:107:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_create_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `_create_record'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:108:in `_create_record'

activerecord (7.0.3.1) lib/active_record/persistence.rb:1067:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `block in create_or_update'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:107:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_save_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:126:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/persistence.rb:648:in `save!'

activerecord (7.0.3.1) lib/active_record/validations.rb:53:in `save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `block in save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'

activerecord (7.0.3.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `save!'

activerecord (7.0.3.1) lib/active_record/suppressor.rb:54:in `save!'

activerecord (7.0.3.1) lib/active_record/persistence.rb:55:in `create!'

app/models/user.rb:1734:in `create_user_option'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:400:in `block in make_lambda'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:236:in `block in halting_and_conditional'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:599:in `block in invoke_after'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:599:in `each'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:599:in `invoke_after'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:108:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_create_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:461:in `_create_record'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:108:in `_create_record'

activerecord (7.0.3.1) lib/active_record/persistence.rb:1067:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `block in create_or_update'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'

activerecord (7.0.3.1) lib/active_record/autosave_association.rb:370:in `around_save_collection_association'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:138:in `run_callbacks'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:929:in `_run_save_callbacks'

activerecord (7.0.3.1) lib/active_record/callbacks.rb:457:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/timestamp.rb:126:in `create_or_update'

activerecord (7.0.3.1) lib/active_record/persistence.rb:648:in `save!'

activerecord (7.0.3.1) lib/active_record/validations.rb:53:in `save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `block in save!'

activerecord (7.0.3.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:314:in `transaction'

activerecord (7.0.3.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'

activerecord (7.0.3.1) lib/active_record/transactions.rb:302:in `save!'

activerecord (7.0.3.1) lib/active_record/suppressor.rb:54:in `save!'

app/models/invite_redeemer.rb:142:in `create_user_from_invite'

app/models/invite_redeemer.rb:208:in `invited_user'

app/models/invite_redeemer.rb:260:in `add_user_to_groups'

app/models/invite_redeemer.rb:226:in `process_invitation'

app/models/invite_redeemer.rb:55:in `block in redeem'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'

activesupport (7.0.3.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'

activerecord (7.0.3.1) lib/active_record/connection_adapters/abstract/database_statements.rb:316:in `transaction'

activerecord (7.0.3.1) lib/active_record/transactions.rb:209:in `transaction'

app/models/invite_redeemer.rb:53:in `redeem'

app/models/invite.rb:227:in `redeem'

app/controllers/invites_controller.rb:227:in `perform_accept_invitation'

actionpack (7.0.3.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

actionpack (7.0.3.1) lib/abstract_controller/base.rb:215:in `process_action'

actionpack (7.0.3.1) lib/action_controller/metal/rendering.rb:53:in `process_action'

actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:234:in `block in process_action'

activesupport (7.0.3.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'

app/controllers/application_control

Вероятно, это связано с плагином Discourse Encrypt (для личных сообщений). Обновление было выпущено 12 дней назад, поэтому, когда я обновил сайт вчера, плагин также обновился.
Этот плагин установлен на моём сайте, но отключён. Я попробую закомментировать его в app.yml и посмотрю, как это сработает. :slightly_smiling_face:

2 лайка

Я могу воспроизвести это сейчас. :+1:

У меня на тестовом сайте тоже включено шифрование, но оно было активировано. Если я его отключу, то при регистрации тестовых пользователей возникают ошибки.

2 лайка

Это отличная новость :slightly_smiling_face: Я только что пересобрал, но теперь я успокоился :smiley: Спасибо, Jammy :slightly_smiling_face: Можешь перенести это в bug?

1 лайк

К сожалению, у меня это всё ещё не работает после пересборки без плагина. Возможно, этого недостаточно… :person_shrugging:

Когда я выключаю его, он ломается, но при повторном включении снова работает. Возможно, вам потребуется переустановить его и включить, пока идёт работа над исправлением?

1 лайк

Интересно, в чём идея того, что плагины модифицируют столбцы основных таблиц, вместо использования таблицы plugin_store_rows или специализированных таблиц discourse_pluginname_function.

По моему мнению, это всегда заканчивается слезами (или, по словам Сэма: «немного кошмаром») и сложными проблемами.

5 лайков

Кажется, это работает :+1: Спасибо! :slightly_smiling_face:

1 лайк

Вау. Или user_custom_field. Это действительно удивительно.

Хотел просто поблагодарить за отчёт, @Don. Мы работаем над исправлением этой проблемы и скоро его выпустим.

Обновление: исправление уже в разработке FIX: allow encrypt_pms_default to be null by KrisKotlarek · Pull Request #231 · discourse/discourse-encrypt · GitHub, оно должно быть слито в ближайшее время.

5 лайков

Я обновился сегодня, и теперь всё работает отлично, если отключить плагин. Я ещё не пробовал удалить его и пересобрать, но уверен, что это тоже сработает. Большое спасибо за исправление! :slightly_smiling_face:

2 лайка