외부 데이터베이스에 등록된 이메일로만 계정 생성

외부 웹사이트에 등록되어 있는 사용자만 내 Discourse 포럼에서 계정을 생성할 수 있도록 하고 싶습니다. 제 웹사이트에는 인증 기능이 없고 SQL 데이터베이스에 단순히 등록만 이루어지기 때문에 SSO API를 사용할 수 없다고 생각합니다.

SQL 데이터베이스(내 웹사이트)에 등록된 사용자만 가입할 수 있도록 가입 시 조건을 설정할 수 있을까요?

저는 디스커스 전문가가 아니지만, 이 문제를 처리하는 방법은 여러 가지가 있고, 제가 시도해 볼 가치가 있다고 생각하는 방법은 다음과 같습니다:

  1. 새로운 디스커스 사용자의 승인을 요구합니다.
  2. 원격 웹사이트나 서버리스 환경에서 스크립트를 개발하여 데이터베이스에서 특정 사람을 조회한 후, 디스커스 API를 호출하여 새 사용자를 승인하거나 거절합니다.
  3. 새 사용자가 등록되면 디스커스가 해당 스크립트에 웹훅 호출을 하도록 설정합니다.
  4. 사용자에게 현재 진행 중인 사항을 더 잘 설명할 수 있도록 디스커스의 문구를 사용자화합니다.

기본적으로 디스커스는 웹훅과 API가 잘 갖춰져 있어, 원격에서 원하는 언어로 커스텀 스크립트를 작성하면서 이를 활용할 수 있습니다.

루비로 디스커스 플러그인을 작성하는 것에 문제가 없다면 그 방법도 작동할 것입니다. 하지만 개인적으로는 그렇지 못해 이 방법을 더 쉬운 것으로 생각합니다.

이를 수행하는 방법 중 하나는 invite only(초대만 허용) 및 must approve users(사용자 승인 필요) 사이트 설정을 활성화하는 것입니다. 이 설정이 활성화되면, 사이트에 초대받은 사용자만 계정을 생성할 수 있습니다. must approve users 사이트 설정으로 인해 비스태프 사용자는 초대를 보낼 수 없으므로, 초대는 스태프 사용자만 보낼 수 있습니다.

이후 SQL 데이터베이스에서 이메일 주소를 추출하여 CSV 파일에 추가할 수 있습니다. 이 파일을 사용하여 대량 사용자 초대 보내기에 나와 있는 단계를 따르며 사용자를 대량으로 초대할 수 있습니다.

제안해 주셔서 감사합니다, Jonathan.
가입을 승인하거나 거절하는 데 사용할 API를 찾을 수 없었습니다.

시몬, 감사합니다.
데이터베이스가 넓고 업데이트 가능한 것이 문제입니다.

GitHub에서 Discourse 코드베이스를 검색해 보니 put "/review/#{reviewable.id}/perform/approve_user.json"과 같은 approve_user 액션을 찾았습니다. 필요한 reviewable ID를 얻기 위해 먼저 reviewables를 가져와야 할 것 같습니다.