삭제된 사용자를 다시 초대하기

아마도 엣지 케이스인 것 같습니다. API 엔드포인트(/invites.json)를 테스트했을 때 모든 것이 정상적으로 작동했습니다. 그런데 초대된 사용자를 삭제한 후 해당 엔드포인트에서 422 응답을 받게 되었습니다. 데이터 탐색기를 통해 사용자가 더 이상 존재하지 않음을 확인할 수 있지만, 초대 테이블에는 여전히 해당 초대가 나열되어 있습니다.

이전에 삭제된 이메일 주소로 사용자를 초대할 수 있을까요?

4개의 좋아요

안녕하세요, 환영합니다! 확인을 위해 여쭤보겠습니다 - 삭제하시기 전에 초대된 사용자가 초대를 수락했거나 계정을 생성했었나요?

1개의 좋아요

감사합니다! 네, 초대장을 수락한 후 계정을 삭제했습니다.

1개의 좋아요

음, 설명하신 방식으로 재현해 보았지만, 제가 뭔가 오해하고 있는 것 같네요 (전혀 불가능한 일은 아니지만요). 기대했던 결과와 실제로 보이는 결과를 설명해 주시면 도움이 될 것 같습니다.

저는 다음 환경을 사용했습니다:

버전: 2.7.0beta7
OS: Ubuntu 20.04.1 LTS

그리고 다음과 같이 진행했습니다:

  • UI에서 특정 이메일 주소를 가진 사용자를 초대했습니다. (관리자 > 사용자 > 초대 보내기)
    • 초대를 보내고, 초대를 특정 이메일 주소로 제한하는 옵션을 선택했습니다.
  • 별도의 인코그니토 창에서 해당 이메일 주소로 받은 초대를 수락했습니다.
  • 원래 창에서 관리자 사용자로 로그인하여 방금 가입한 사용자를 삭제했습니다.
  • Postman을 사용하여 https://example.dev/u/my-dev-user/invited.json으로 GET 요청을 보냈습니다.
    • 이것이 사용하시던 엔드포인트인가요? /invites.json이라고 언급하셨지만, 저는 그 주소를 사용해도 404 에러가 발생하여 해당 엔드포인트가 존재하는지 확신이 서지 않습니다.
  • 사용자 삭제 후 다음 응답을 받았습니다. 사용자를 삭제했으므로 대기 중, 사용됨, 만료된 초대장이 모두 0개인 것이 예상된 결과입니다:
{
    "invites": [],
    "can_see_invite_details": true,
    "counts": {
        "pending": 0,
        "expired": 0,
        "redeemed": 0,
        "total": 0
    }
}

가능해야 합니다. 위에서 삭제했던 동일한 이메일로 다시 초대를 보내어 아무 문제 없이 성공했습니다.

2개의 좋아요

아, 죄송합니다. 엔드포인트를 명시해야 했네요. Discourse API Docs

제가 수행한 단계는 다음과 같습니다:

  • POST 엔드포인트 Discourse API Docs 를 사용하여 사용자 초대
  • 이메일을 통해 초대 수락
  • 관리자 계정으로 로그인하여 사용자 삭제
  • 1단계와 동일하게 사용자를 다시 초대 시도. 이번에는 오류와 함께 422 응답을 받았습니다: ```
    {
    “failed”: “FAILED”
    }
2개의 좋아요

아, 그리고 추가로 말씀드리면, 관리 인터페이스에서는 말씀하신 대로 초대 기능이 정상적으로 작동하지만, 제가 사용하는 POST 엔드포인트에서는 작동하지 않습니다.

1개의 좋아요

아, 이제 명확해졌어요 - 네, 이제 재현할 수 있습니다.

API에서 POST 요청을 사용하여 완전히 새로운 이메일 주소로 일반 초대장을 보낼 수 있습니다:
기대했던 대로 다음과 같은 응답을 받습니다:

요청: https://example.dev/invites.json?email=example%2Bsomething@hey.com
실제 응답

{
    "id": 7,
    "invite_key": "inviteKEY",
    "link": "https://example.dev/invites/inviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:57:08.602Z",
    "updated_at": "2021-04-26T23:57:08.602Z",
    "expires_at": "2021-05-26T23:57:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}
  • 그런 다음 다른 곳에서 로그인하여 해당 사용자의 초대장을 수락합니다.
  • 다음으로 관리자 계정으로 다시 로그인하여 이메일이 example+something@hey.com인 사용자를 삭제합니다.
  • 마지막으로 동일한 POST 요청을 API에 다시 보내 해당 사용자를 다시 초대합니다.

요청: https://example.dev/invites.json?email=example%2Bsomething@hey.com
기대된 응답

{
    "id": 8,
    "invite_key": "newinviteKEY",
    "link": "https://example.dev/invites/newinviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:59:08.602Z",
    "updated_at": "2021-04-26T23:59:08.602Z",
    "expires_at": "2021-05-26T23:59:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}

실제 응답

{
    "failed": "FAILED"
}
3개의 좋아요

아, 다행히 나만 그런 게 아니었군요 :slight_smile: 여기는 처음인데, 이건 이제 버그로 보고되는 건가요, 아니면 GitHub 같은 다른 곳에 올려야 하나요?

1개의 좋아요

제가 이해한 바로는, 이 내용이 보고서를 대체해야 합니다! 우리 둘이서 버그 보고서의 표준을 거의 충족했을 것 같습니다.

& 그리고 hopefully 설명, 우회 방법, 또는 수정 방법을 제공할 수 있는 누군가가 우리에게 어떻게 해야 하는지 알려주기를 바랍니다.

6개의 좋아요

@hcw-rohan @weallwegot 이 버그는 #12927에서 수정되었습니다.

안녕하세요,

버그 수정이 되돌려졌거나 더 이상 작동하지 않는 것 같습니다. 오늘 이 버그를 다시 경험했기 때문입니다. 아래 단계를 따라 문제를 확인했습니다.

  • 관리자 패널에서 사용자를 삭제했습니다.
  • API를 통해 해당 사용자를 초대했습니다.
  • 실패 메시지가 표시되었습니다.

  • 삭제된 사용자의 대기 중인 초대를 삭제했습니다.

  • API를 통해 삭제된 사용자를 초대했습니다.

  • 성공 메시지가 표시되었습니다.

  • 초대를 받았지만 클릭했을 때 "죄송합니다! 이 초대는 기존 계정이 없는 신규 사용자를 위한 것입니다."라는 경고가 나타났습니다.

  • API나 관리자 패널 어디에서도 삭제된 사용자를 찾을 수 없습니다.

  • 마지막으로, 시크릿 창에서 초대 링크를 열려고 했더니 신규 사용자로 로그인할 수 있었습니다. 쿠키 관련 문제일까요?

  • API를 통해 새 사용자를 추가하려고 했습니다.

  • 성공 메시지가 표시되었습니다.

도움이 되길 바랍니다.

Greg님,

버그를 재현해 보려고 했으나, 제 환경에서는 삭제된 사용자를 다시 초대하는 방식으로 문제가 해결되었습니다. 이메일 초대와 링크 초대 두 가지 방식을 모두 시도해 보았습니다.

초대 페이지에 접근할 때 로그인되어 있지 않았는지 확인해 주시겠습니까? 이 메시지가 표시되는 코드 경로는 하나뿐이며, 제가 볼 때 명백한 문제는 발견되지 않습니다.