이메일로 생성된 초대 링크를 사용하지 못합니다

다음 JSON을 /invites.json API 엔드포인트에 POST 요청으로 보내고 있습니다:

{
    "email": "new.member@example.com",
    "skip_email": true,
    "max_redemptions_allowed": 1,
    "expires_at": << 현재 날짜 + 1개월 >>
    "group_names": "example_group"
}

이로써 유효한 초대장이 생성되며, 해당 초대 링크를 가져와 사용자에게 제공합니다.

그러나 사용자가 초대장을 사용하려고 할 때, discourse/app/controllers/invites_controller.rb at main · discourse/discourse · GitHub 에서 데이터베이스 업데이트 실패로 인해 일반적인 invite.error_message 오류가 발생합니다.

코드를 추적해 보았지만, 눈에 띄는 명확한 문제는 발견하지 못했습니다.

invites 테이블의 레코드 예시는 다음과 같습니다:

  id  |            invite_key            |            email             | invited_by_id | user_id | redeemed_at |         created_at         |         updated_at         | deleted_at | deleted_by_id |       invalidated_at       | moderator | custom_message | emailed_status | max_redemptions_allowed | redemption_count |       expires_at
 1587 | 4b4e........................2307 | example@gmail.com            |             1 |         |             | 2021-04-11 23:51:05.253528 | 2021-04-11 23:51:05.253528 |            |               |                            | f         |                |              0 |                       1 |                0 | 2021-05-11 11:51:05.193

UI에서 시도해 보셨나요? 작동하나요? 그렇다면 UI가 보내는 요청과 직접 보낸 요청 사이에 어떤 차이가 있나요?

사이트의 /logs에 관련 내용이 있나요?

불행히도 로그에 아무것도 없습니다. UI에서는 시도해 보지 않았으니, 그 부분을 확인해 보겠습니다.

참고로, 프로덕션 환경에서 패치를 적용하거나 포크를 실행하는 방법에 대해 설명하는 게시글이 어딘가에 있을까요? 여기 제 댓글을 확인해 주세요: Install Discourse for development using Docker - #152 by jessicah.

@sam 일부 사용자들에게만 영향을 주고 다른 사용자들에게는 그렇지 않은 것 같지만, 무엇이 다른지는 아직 파악하지 못했어요 :-/

추가 로깅을 추가하는 패치를 실행해볼까 했지만, 이전 메시지의 링크에 따르면 개발 환경은 실행할 수 있지만 프로덕션 인스턴스에서는 작동하지 않아서 디버깅 방법을 모르겠어요 :frowning:

모든 사용자가 초대 권한을 가진 것은 아닙니다. API를 통해 초대를 실행하는 사용자가 초대 권한을 가지고 있는지 확인해 보셨나요?

invited_by_id는 1, 즉 관리자(a.k.a admin)이며, 모든 초대 시 사용됩니다.

1개의 좋아요

제시카님, 안녕하세요.

4월 이후로 초대 코드가 크게 변경되었습니다. 여전히 문제가 발생하고 있는지 궁금합니다.

@dan 님에게 공유합니다.

2개의 좋아요