# 초대 기한이 만료된 경우 로그인할 수 없음

**URL:** https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814
**Category:** Bug
**Tags:** invites
**Created:** [2월 2, 2022, 9:14오전 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814 "2022-02-02T09:14:37Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![trobiyo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/trobiyo/32/311872_2.png) [@trobiyo](https://meta.discourse.org/u/trobiyo)
#### Post date: [2월 2, 2022, 9:14오전 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814/1 "2022-02-02T09:14:37Z")

</div>

팀 여러분께,

사용자 초대 관련 버그(또는 회귀 문제)를 발견한 것 같습니다(버전 `v2.8.0.beta11`). 재현 단계를 설명드리겠습니다:

1. `user@company.com` 사용자에게 초대를 보냅니다. (`user@company.com`은 포럼에 존재하지 않습니다.)
2. 사용자가 초대를 수락하지 않고 대신 `로그인` 버튼을 통해 로그인합니다. ([discourse/discourse-oauth2-basic: A basic OAuth2 plugin for use with Discourse (github.com)](https://github.com/discourse/discourse-oauth2-basic) 플러그인을 사용하여 로그인합니다.)
3. 초대 기한이 만료됩니다.
4. 다음과 같은 화면이 표시되어 사용자가 더 이상 로그인할 수 없습니다:

 ![image](https://global.discourse-cdn.com/meta/original/3X/5/1/51b3e7ae6e183e95a0ef32b3291181248da4b770.png)

우회 방법

다음 창에서 초대를 삭제하면 문제가 해결되어 사용자가 다시 정상적으로 로그인할 수 있습니다:

 ![image](https://global.discourse-cdn.com/meta/original/3X/d/6/d6336f86a07f33c4439c8d82264293d80adca23b.png)

> **로그**
>
> **info**
> 
> ```bash
> ActiveRecord::RecordInvalid (Validation failed: There's no need to invite <b>user@company.com</b>, they <a href='/u/user/summary'>already have an account!</a>)
> app/models/invite.rb:242:in `invalidate_for_email'
> app/controllers/users/omniauth_callbacks_controller.rb:182:in `user_found'
> app/controllers/users/omniauth_callbacks_controller.rb:128:in `complete_response_data'
> app/controllers/users/omniauth_callbacks_controller.rb:73:in `complete'
> app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
> app/controllers/application_controller.rb:387:in `with_resolved_locale'
> lib/middleware/omniauth_bypass_middleware.rb:50:in `call'
> lib/content_security_policy/middleware.rb:12:in `call'
> lib/middleware/anonymous_cache.rb:354: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:198:in `call'
> 
> ```
> 
> **backtrace**
> 
> ```bash
> activerecord (6.1.4.1) lib/active_record/validations.rb:80:in `raise_validation_error'
> activerecord (6.1.4.1) lib/active_record/validations.rb:53:in `save!'
> activerecord (6.1.4.1) lib/active_record/transactions.rb:302:in `block in save!'
> activerecord (6.1.4.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
> activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction'
> activerecord (6.1.4.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
> activerecord (6.1.4.1) lib/active_record/transactions.rb:302:in `save!'
> activerecord (6.1.4.1) lib/active_record/suppressor.rb:48:in `save!'
> activerecord (6.1.4.1) lib/active_record/persistence.rb:639:in `block in update!'
> activerecord (6.1.4.1) lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
> activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
> activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
> activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
> activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
> activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
> activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
> activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
> activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
> activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
> activerecord (6.1.4.1) lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
> activerecord (6.1.4.1) lib/active_record/persistence.rb:637:in `update!'
> app/models/invite.rb:242:in `invalidate_for_email'
> app/controllers/users/omniauth_callbacks_controller.rb:182:in `user_found'
> app/controllers/users/omniauth_callbacks_controller.rb:128:in `complete_response_data'
> app/controllers/users/omniauth_callbacks_controller.rb:73:in `complete'
> actionpack (6.1.4.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
> actionpack (6.1.4.1) lib/abstract_controller/base.rb:228:in `process_action'
> actionpack (6.1.4.1) lib/action_controller/metal/rendering.rb:30:in `process_action'
> actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
> activesupport (6.1.4.1) lib/active_support/callbacks.rb:117:in `block in run_callbacks'
> app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
> i18n (1.8.11) lib/i18n.rb:314:in `with_locale'
> app/controllers/application_controller.rb:387:in `with_resolved_locale'
> activesupport (6.1.4.1) lib/active_support/callbacks.rb:126:in `block in run_callbacks'
> activesupport (6.1.4.1) lib/active_support/callbacks.rb:137:in `run_callbacks'
> actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:41:in `process_action'
> actionpack (6.1.4.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
> actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
> activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `block in instrument'
> activesupport (6.1.4.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
> activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `instrument'
> actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
> actionpack (6.1.4.1) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
> activerecord (6.1.4.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
> actionpack (6.1.4.1) lib/abstract_controller/base.rb:165:in `process'
> actionview (6.1.4.1) lib/action_view/rendering.rb:39:in `process'
> rack-mini-profiler (2.3.3) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
> actionpack (6.1.4.1) lib/action_controller/metal.rb:190:in `dispatch'
> actionpack (6.1.4.1) lib/action_controller/metal.rb:254:in `dispatch'
> actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
> actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:33:in `serve'
> actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
> actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
> actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
> actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
> omniauth (1.9.1) lib/omniauth/strategy.rb:420:in `call_app!'
> omniauth (1.9.1) lib/omniauth/strategy.rb:373:in `callback_phase'
> omniauth-oauth2 (1.7.2) lib/omniauth/strategies/oauth2.rb:93:in `callback_phase'
> omniauth (1.9.1) lib/omniauth/strategy.rb:238:in `callback_call'
> omniauth (1.9.1) lib/omniauth/strategy.rb:189:in `call!'
> omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
> omniauth (1.9.1) lib/omniauth/strategy.rb:192:in `call!'
> omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
> omniauth (1.9.1) lib/omniauth/strategy.rb:192:in `call!'
> omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
> omniauth (1.9.1) lib/omniauth/strategy.rb:192:in `call!'
> omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
> omniauth (1.9.1) lib/omniauth/strategy.rb:192:in `call!'
> omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
> omniauth (1.9.1) lib/omniauth/strategy.rb:192:in `call!'
> omniauth (1.9.1) lib/omniauth/strategy.rb:169:in `call'
> omniauth (1.9.1) lib/omniauth/builder.rb:45:in `call'
> lib/middleware/omniauth_bypass_middleware.rb:50:in `call'
> rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
> rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
> rack (2.2.3) lib/rack/head.rb:12:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
> lib/content_security_policy/middleware.rb:12:in `call'
> lib/middleware/anonymous_cache.rb:354:in `call'
> config/initializers/008-rack-cors.rb:25:in `call'
> rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
> rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/cookies.rb:689:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
> activesupport (6.1.4.1) lib/active_support/callbacks.rb:98:in `run_callbacks'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
> logster (2.10.1) lib/logster/middleware/reporter.rb:43:in `call'
> railties (6.1.4.1) lib/rails/rack/logger.rb:37:in `call_app'
> railties (6.1.4.1) lib/rails/rack/logger.rb:28:in `call'
> config/initializers/100-quiet_logger.rb:23:in `call'
> config/initializers/100-silence_logger.rb:31:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
> lib/middleware/enforce_hostname.rb:23:in `call'
> rack (2.2.3) lib/rack/method_override.rb:24:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
> rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
> actionpack (6.1.4.1) lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
> plugins/discourse-prometheus/lib/middleware/metrics.rb:17:in `call'
> rack-mini-profiler (2.3.3) lib/mini_profiler/profiler.rb:249:in `call'
> message_bus (4.0.0) lib/message_bus/rack/middleware.rb:60:in `call'
> lib/middleware/request_tracker.rb:198:in `call'
> railties (6.1.4.1) lib/rails/engine.rb:539:in `call'
> railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'
> railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'
> rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
> rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
> rack (2.2.3) 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/2.7.0/bin/unicorn:25:in `loa
> 
> ```

감사합니다,  
Ismael

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 3, 2022, 4:11오전 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814/3 "2022-02-03T04:11:28Z")

</div>

궁금한 건, 이런 일이发生时 `/logs`에 뭔가 남나요?

---

<div class="post-metadata">

### Author: ![trobiyo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/trobiyo/32/311872_2.png) [@trobiyo](https://meta.discourse.org/u/trobiyo)
#### Post date: [2월 3, 2022, 8:05오전 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814/4 "2022-02-03T08:05:46Z")

</div>

Sam 님,

네, 위 메시지에 `/logs`에 다음과 같이 시작되는 오류 메시지와 관련된 스택 트레이스를 첨부했습니다:

```bash
ActiveRecord::RecordInvalid (Validation failed: There's no need to invite <b>user@company.com</b>, they <a href='/u/<user>/summary'>already have an account!</a>)

```

또한 다음과 같은 경고 메시지도 있습니다:

**info** 탭

```bash
Failed to handle exception in exception app middleware : Validation failed: There's no need to invite <b>user@company.com</b>, they <a href='/u/<user>/summary'>already have an account!</a>

```

**backtrace**

```bash
activerecord-6.1.4.1/lib/active_record/validations.rb:80:in `raise_validation_error'
activerecord-6.1.4.1/lib/active_record/validations.rb:53:in `save!'
activerecord-6.1.4.1/lib/active_record/transactions.rb:302:in `block in save!'
activerecord-6.1.4.1/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction'
activerecord-6.1.4.1/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
activerecord-6.1.4.1/lib/active_record/transactions.rb:302:in `save!'
activerecord-6.1.4.1/lib/active_record/suppressor.rb:48:in `save!'
activerecord-6.1.4.1/lib/active_record/persistence.rb:639:in `block in update!'
activerecord-6.1.4.1/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-6.1.4.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
activerecord-6.1.4.1/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
activerecord-6.1.4.1/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
activerecord-6.1.4.1/lib/active_record/persistence.rb:637:in `update!'
/discourse/app/models/invite.rb:242:in `invalidate_for_email'
/discourse/app/controllers/users/omniauth_callbacks_controller.rb:182:in `user_found'
/discourse/app/controllers/users/omniauth_callbacks_controller.rb:128:in `complete_response_data'
/discourse/app/controllers/users/omniauth_callbacks_controller.rb:73:in `complete'
actionpack-6.1.4.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-6.1.4.1/lib/abstract_controller/base.rb:228:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack-6.1.4.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
/discourse/app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
i18n-1.8.11/lib/i18n.rb:314:in `with_locale'
/discourse/app/controllers/application_controller.rb:387:in `with_resolved_locale'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack-6.1.4.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `block in instrument'
activesupport-6.1.4.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `instrument'
actionpack-6.1.4.1/lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack-6.1.4.1/lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord-6.1.4.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-6.1.4.1/lib/abstract_controller/base.rb:165:in `process'
actionview-6.1.4.1/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-2.3.3/lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
actionpack-6.1.4.1/lib/action_controller/metal.rb:190:in `dispatch'
actionpack-6.1.4.1/lib/action_controller/metal.rb:254:in `dispatch'
actionpack-6.1.4.1/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack-6.1.4.1/lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack-6.1.4.1/lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack-6.1.4.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-6.1.4.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-6.1.4.1/lib/action_dispatch/routing/route_set.rb:842:in `call'
omniauth-1.9.1/lib/omniauth/strategy.rb:420:in `call_app!'
omniauth-1.9.1/lib/omniauth/strategy.rb:373:in `callback_phase'
omniauth-oauth2-1.7.2/lib/omniauth/strategies/oauth2.rb:93:in `callback_phase'
omniauth-1.9.1/lib/omniauth/strategy.rb:238:in `callback_call'
omniauth-1.9.1/lib/omniauth/strategy.rb:189:in `call!'
omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
omniauth-1.9.1/lib/omniauth/strategy.rb:192:in `call!'
omniauth-1.9.1/lib/omniauth/strategy.rb:169:in `call'
omniauth-1.9.1/lib/omniauth/builder.rb:45:in `call'
/discourse/lib/middleware/omniauth_bypass_middleware.rb:50:in `call'
rack-2.2.3/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.3/lib/rack/conditional_get.rb:27:in `call'
rack-2.2.3/lib/rack/head.rb:12:in `call'
actionpack-6.1.4.1/lib/action_dispatch/http/permissions_policy.rb:22:in `call'
/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/discourse/lib/middleware/anonymous_cache.rb:354:in `call'
/discourse/config/initializers/008-rack-cors.rb:25:in `call'
rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-6.1.4.1/lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack-6.1.4.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster-2.10.1/lib/logster/middleware/reporter.rb:43:in `call'
railties-6.1.4.1/lib/rails/rack/logger.rb:37:in `call_app'
railties-6.1.4.1/lib/rails/rack/logger.rb:28:in `call'
/discourse/config/initializers/100-quiet_logger.rb:23:in `call'
/discourse/config/initializers/100-silence_logger.rb:31:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/request_id.rb:26:in `call'
/discourse/lib/middleware/enforce_hostname.rb:23:in `call'
rack-2.2.3/lib/rack/method_override.rb:24:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.3/lib/rack/sendfile.rb:110:in `call'
actionpack-6.1.4.1/lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
/discourse/plugins/discourse-prometheus/lib/middleware/metrics.rb:17:in `call'
rack-mini-profiler-2.3.3/lib/mini_profiler/profiler.rb:249:in `call'
message_bus-4.0.0/lib/message_bus/rack/middleware.rb:60:in `call'
/discourse/lib/middleware/request_tracker.rb:198:in `call'
railties-6.1.4.1/lib/rails/engine.rb:539:in `call'
railties-6.1.4.1/lib/rails/railtie.rb:207:in `public_send'
railties-6.1.4.1/lib/rails/railtie.rb:207:in `method_missing'
rack-2.2.3/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.3/lib/rack/urlmap.rb:58:in `each'
rack-2.2.3/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)>'
/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `load'
/discourse/vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `<main>'

```

감사합니다,  
Ismael

---

<div class="post-metadata">

### Author: ![dan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dan/32/101549_2.png) [@dan](https://meta.discourse.org/u/dan)
#### Post date: [2월 4, 2022, 4:31오후 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814/6 "2022-02-04T16:31:52Z")

</div>

이 버그를 재현해 보았지만 성공하지 못했습니다. 제가 놓치고 있는 어떤 세부 사항 때문일 수도 있고, 이 커밋에서 이미 수정되었을 수도 있습니다:

> <https://github.com/discourse/discourse/commit/820564826e99791b1dae361f3efb6106146d4bd0>
>
> In the unlikely, but possible, scenario where a user has no email\_tokens, and ha…s an invite record for their email address, login would fail. This commit fixes the \`Invite\` \`user\_doesnt\_already\_exist\` validation so that it only applies to new invites, or when changing the email address.
> 
> This regressed in d8fe0f4199b5bb44fa79fa489586b4029289242c (based on \`git bisect\`)

마지막으로 업데이트한 시점이 언제였나요?

---

<div class="post-metadata">

### Author: ![trobiyo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/trobiyo/32/311872_2.png) [@trobiyo](https://meta.discourse.org/u/trobiyo)
#### Post date: [2월 4, 2022, 6:08오후 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814/7 "2022-02-04T18:08:09Z")

</div>

좋은 지적입니다. 저희는 조금 더 일찍 업그레이드했습니다( [FIX: Selected group cleared between emoji uploads (#15581) · discourse/discourse@48f70dc · GitHub](https://github.com/discourse/discourse/commit/48f70dcd5f5e0c151342efd094f79cba8949872f)). 잠재적 수정 사항 적용 7일 전이죠.

어쨌든 월요일 오전에 확인해 보겠습니다. 그때까지 새 `v2.9.0.beta1` 버전을 배포할 예정이니까요.

확인해 주셔서 감사합니다.  
Ismael

향후를 위한 참고: 버그를 보고할 때 버전과 대상 커밋을 모두 첨부하세요.

---

<div class="post-metadata">

### Author: ![trobiyo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/trobiyo/32/311872_2.png) [@trobiyo](https://meta.discourse.org/u/trobiyo)
#### Post date: [2월 7, 2022, 8:35오전 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814/8 "2022-02-07T08:35:11Z")

</div>

확인 결과, 잠재적인 수정 이후 몇 개의 커밋 뒤에 있는 [Only block domains at the final destination (#15689) · discourse/discourse@aac9f43 (github.com)](https://github.com/discourse/discourse/commit/aac9f43038fc24acead1d1b853d93613afb59c4f) 커밋, 즉 `v2.9.0.beta1` 버전에서 정상적으로 작동하는 것을 확인했습니다.

참고로, 만료된 초대장을 가진 존재하지 않는 사용자는 아무 문제 없이 로그인할 수 있으며, 예상대로 사용자 계정이 생성되었습니다.

이 문제를 살펴봐 주시고 수정해 주셔서 감사합니다!

감사합니다,  
Ismael

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2월 7, 2022, 11:42오후 UTC](https://meta.discourse.org/t/users-not-able-to-login-in-when-invitation-has-expired/216814/9 "2022-02-07T23:42:52Z")

</div>


