المستخدمون يتلقون خطأ داخل الخادم عند محاولة تغيير عنوان البريد الإلكتروني

Discourse 3.4.0.beta4-dev (5bc7371192).

لا يمكن للمستخدمين تغيير عنوان بريدهم الإلكتروني إلى عنوان بريد إلكتروني تم استخدامه سابقًا.

خطوات التكرار:

  1. قم بتغيير عنوان البريد الإلكتروني لحسابك إلى شيء يحتوي على علامة +، على سبيل المثال your+name@example.com

(قد تكون علامة الجمع هي المفتاح المهم هنا، أو قد تكون مجرد مؤشر خاطئ)

  1. اتبع رسائل البريد الإلكتروني لتأكيد التغيير

  2. قم بتغيير عنوان بريدك الإلكتروني مرة أخرى إلى ما كان عليه سابقًا، على سبيل المثال yourname@example.com

  3. اتبع رسائل البريد الإلكتروني لتأكيد التغيير

  4. يتم طرح خطأ في الواجهة الأمامية:

يصبح المستخدم عالقًا بعد ذلك مع:


خطأ من صفحة /logs:

lib/email_updater.rb:136:in `update_user_email'

lib/email_updater.rb:126:in `block in confirm'

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

activesupport (7.2.2.1) lib/active_support/concurrency/null_lock.rb:9:in `synchronize'

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

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

activerecord (7.2.2.1) lib/active_record/transactions.rb:234:in `block in transaction'

activerecord (7.2.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'

activerecord (7.2.2.1) lib/active_record/connection_handling.rb:296:in `with_connection'

activerecord (7.2.2.1) lib/active_record/transactions.rb:233:in `transaction'

lib/email_updater.rb:87:in `confirm'

app/controllers/users_email_controller.rb:64:in `confirm_new_email'

actionpack (7.2.2.1) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'

actionpack (7.2.2.1) lib/abstract_controller/base.rb:226:in `process_action'

actionpack (7.2.2.1) lib/action_controller/metal/rendering.rb:193:in `process_action'

actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'

activesupport (7.2.2.1) lib/active_support/callbacks.rb:121:in `block in run_callbacks'

app/controllers/application_controller.rb:424:in `block in with_resolved_locale'

i18n (1.14.7) lib/i18n.rb:353:in `with_locale'

app/controllers/application_controller.rb:424:in `with_resolved_locale'

activesupport (7.2.2.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'

activesupport (7.2.2.1) lib/active_support/callbacks.rb:141:in `run_callbacks'

actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'

actionpack (7.2.2.1) lib/action_controller/metal/rescue.rb:27:in `process_action'

actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:77:in `block in process_action'

activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `block in instrument'

activesupport (7.2.2.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'

activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `instrument'

actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:76:in `process_action'

actionpack (7.2.2.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'

activerecord (7.2.2.1) lib/active_record/railties/controller_runtime.rb:39:in `process_action'

actionpack (7.2.2.1) lib/abstract_controller/base.rb:163:in `process'

actionview (7.2.2.1) lib/action_view/rendering.rb:40:in `process'

actionpack (7.2.2.1) lib/action_controller/metal.rb:252:in `dispatch'

actionpack (7.2.2.1) lib/action_controller/metal.rb:335:in `dispatch'

actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'

actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:50:in `serve'

actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:53:in `block in serve'

actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'

actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `each'

actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `find_routes'

actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:34:in `serve'

actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:896:in `call'

lib/middleware/omniauth_bypass_middleware.rb:64:in `call'

rack (2.2.10) lib/rack/tempfile_reaper.rb:15:in `call'

rack (2.2.10) lib/rack/conditional_get.rb:40:in `call'

rack (2.2.10) lib/rack/head.rb:12:in `call'

actionpack (7.2.2.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'

lib/content_security_policy/middleware.rb:12:in `call'

lib/middleware/anonymous_cache.rb:403:in `call'

lib/middleware/csp_script_nonce_injector.rb:12:in `call'

config/initializers/008-rack-cors.rb:14:in `call'

rack (2.2.10) lib/rack/session/abstract/id.rb:266:in `context'

rack (2.2.10) lib/rack/session/abstract/id.rb:260:in `call'

actionpack (7.2.2.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'

actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'

activesupport (7.2.2.1) lib/active_support/callbacks.rb:101:in `run_callbacks'

actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:30:in `call'

actionpack (7.2.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'

actionpack (7.2.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'

logster (2.20.0) lib/logster/middleware/reporter.rb:40:in `call'

railties (7.2.2.1) lib/rails/rack/logger.rb:41:in `call_app'

railties (7.2.2.1) lib/rails/rack/logger.rb:29:in `call'

config/initializers/100-quiet_logger.rb:20:in `call'

config/initializers/100-silence_logger.rb:29:in `call'

actionpack (7.2.2.1) lib/action_dispatch/middleware/request_id.rb:33:in `call'

lib/middleware/enforce_hostname.rb:24:in `call'

rack (2.2.10) lib/rack/method_override.rb:24:in `call'

actionpack (7.2.2.1) lib/action_dispatch/middleware/executor.rb:16:in `call'

rack (2.2.10) lib/rack/sendfile.rb:110:in `call'

lib/middleware/processing_request.rb:12:in `call'

message_bus (4.3.8) lib/message_bus/rack/middleware.rb:60:in `call'

lib/middleware/request_tracker.rb:385:in `call'

actionpack (7.2.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'

railties (7.2.2.1) lib/rails/engine.rb:535:in `call'

railties (7.2.2.1) lib/rails/railtie.rb:226:in `public_send'

railties (7.2.2.1) lib/rails/railtie.rb:226:in `method_missing'

rack (2.2.10) lib/rack/urlmap.rb:74:in `block in call'

rack (2.2.10) lib/rack/urlmap.rb:58:in `each'

rack (2.2.10) lib/rack/urlmap.rb:58:in `call'

unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'

unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'

unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'

unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'

unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'

vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'

vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'
إعجاب واحد (1)

هل تحققت من إعدادات normalize_emails؟ لا أقول إنه لا يوجد خطأ هنا :slight_smile:

إعجابَين (2)

لا، لم أتحقق من هذا الإعداد، لم أكن أعرف بوجوده، شكرًا @Canapin :slight_smile:

إذا كان هذا هو سبب المشكلة، فيجب اكتشاف خطأ Internal Server Error ومعالجته لإخبار المستخدم لماذا لا يمكنه استخدام عنوان البريد الإلكتروني هذا.

3 إعجابات

سيقوم شخص ما بالاطلاع على هذا خلال الأسابيع الأربعة القادمة، يجب أن نعرض تحذيرًا واضحًا للمستخدم وليس “خطأ في الخادم الداخلي”

3 إعجابات

شكرا لك @sam

تم إصلاح هذا باستخدام هذا الالتزام:

إذا كان لديك تغيير بريد إلكتروني غير مؤكد، فإنني أوصي بحذفه أولاً ضمن صفحة تفضيلات المستخدم (على سبيل المثال، /my/preferences/account) عن طريق النقر على أيقونة المفتاح بجوار البريد الإلكتروني غير المؤكد والنقر فوق إزالة البريد الإلكتروني.

بعد ذلك، يمكنك البدء في عملية تغيير البريد الإلكتروني مرة أخرى، والتي يجب أن تعمل بشكل صحيح هذه المرة.

إعجابَين (2)

تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام. لم يُسمح بمشاركات جديدة بعد الآن.