NoMethodError (undefined method `id' for #<Guardian…

몇 일 전부터 이 오류가 발생하고 있습니다. 모든 기능이 정상적으로 작동하는 것 같지만, 내부에서 정확히 무슨 일이 일어나고 있는지 모르겠습니다. 걱정해야 하는 건지, 아니면 무언가 조치를 취해야 하는 건가요? 익명 게시물을 삭제하려는 시도에서 비롯된 건가요?

Discourse는 약 10시간 전에 업데이트되었습니다…

Message (16 copies reported)

NoMethodError (undefined method `id' for #<Guardian::AnonymousUser:0x00007f5fe7ae9ea0>)
lib/guardian.rb:624:in `is_my_own?'
lib/guardian/post_guardian.rb:262:in `can_delete_post_action?'
app/controllers/application_controller.rb:422:in `block in with_resolved_locale'
app/controllers/application_controller.rb:422:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:387:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:233:in `call'

Backtrace

lib/guardian.rb:624:in `is_my_own?'
lib/guardian/post_guardian.rb:262:in `can_delete_post_action?'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:230:in `format_like_user'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:236:in `block in format_likes_users'
activerecord (7.0.7) lib/active_record/relation/delegation.rb:88:in `each'
activerecord (7.0.7) lib/active_record/relation/delegation.rb:88:in `each'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:236:in `map'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:236:in `format_likes_users'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:160:in `post_reactions_users'
actionpack (7.0.7) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

Env

HTTP HOSTS: foorumi.katiska.eu

틀린 말일 수도 있지만, 익명 모드 사용자가 게시물을 삭제하는 데 어려움을 겪고 있는 것 같습니다?

그런 경우는 없다고 확신합니다. 아마도 백그라운드에서 자동적으로 실행되는 어떤 프로세스 때문일 텐데, 그 부분도 이해가 되지 않습니다.

제 포럼에서는 익명 게시가 거의 일어나지 않으며, 드물게 일어나더라도 일반 사용자에 의해서였습니다. 오래되고 관련 없는 토픽을 삭제했을 가능성은 있지만, 익명 사용자가 있었는지 기억이 나지 않습니다. 그리고 네, 제 포럼의 트래픽이 워낙 적어서 SQL보다 제 기억을 더 신뢰할 수 있을 정도입니다. :rofl:

어떤 이유로든 이메일을 인증하지 않은 사용자가 있었는데, 며칠 전에 시스템이 해당 계정을 삭제했습니다. 그 사용자가 한 것은 좋아요를 누르는 것뿐이었습니다. 그리고 지금 그 오류가 같은 시점에 발생하기 시작했다는 느낌이 듭니다. (더 확실한 정보를 드릴 수 없어 죄송합니다.)

Discourse Reactions와 어떻게든 연결되어 있으므로, 좋아요를 주는 기능이 관련이 있을 수 있습니다.

이들은 이메일을 인증하거나 계정을 활성화하기 전에 어떻게 상호작용을 했을까요?

좋은 질문입니다.

저는 Disable Email Verification for Discourse Plugin 를 설치해 두었지만, 그 시점에는 비활성화되어 있었습니다. 이것이 어딘가에서 누출될 수 있을까요? 하지만 여전히… 저는 스팸 문제가 없어서(소수 언어권에서 활동하는 것의 장점 중 하나…) 일반적인 규칙을 따르지 않습니다. 그래서 가입 즉시 TL1을 부여하는데, 이것이 문제를 일으킬 수도 있을까요?

그러면… 어디서부터 파헤쳐 볼 수 있을까요? 그리고 가장 중요한 질문은: 아무것도 하지 않으면 세상이 끝날까요?

자동 TL1과 관련이 있을 수도 있고 없을 수도 있지만, disable email verification과도 관련이 있을 수 있습니다. 같은 사용자에게 이런 상황이 여러 번 반복되고 있습니다:

id: 606
username: saja
name: Saja
created_at: 2023-10-28 14:34:13 UTC
trust_level: 1
last_seen_at: 
last_emailed_at:

2.11., 28.10., 12.10., 그리고 27.9.에 발생했습니다. 이상한 점은 관리자 로그에 해당 사용자의 IP 주소가 표시되지 않는다는 것입니다. 비활성 계정 삭제의 경우 다른 모든 기록에는 IP가 표시됩니다.

allow_anonymous_likes 설정과 어떤 식으로든 연결되어 있는 것으로 보입니다.

같은 오류를 재현해 볼 수 있는지 확인하기 위해 몇 가지 테스트를 해보았지만, 익명 모드로 전환한 후 좋아요/반응을 주고받거나 이를 제거하거나 게시물을 삭제해도 오류가 발생하지 않았습니다. 중간에 allow_anonymous_likes를 끄기도 했는데 충돌은 없었고, 단순히 좋아요를 제거할 수 없게만 되었습니다. 또한 post undo action window mins 설정도 정상적으로 준수되었습니다.

확신할 수 없습니다. :thinking:

안녕하세요, 제 플러그인과 관련이 있을 수 있어 죄송합니다. 플러그인을 비활성화해 보시고 문제가 해결되는지 확인해 주실 수 있을까요? 최근 작업할 시간이 많지 않았는데, 제 플러그인과 관련이 있다면 알려주세요. 확인해서 조치하겠습니다. 제 플러그인을 사용하는 유저분들께 최대한 많은 지원을 드리고 싶습니다.

여기에서 해당 기능을 활성화해 두고 있는데, 해당 스레드에 명시된 문제들을 제외하고는 다른 문제가 없습니다. (다만, 유저님이 가지고 있는 자동 TL1은 저에게는 없습니다.)