사용자에게 초대장을 보내고 프로필을 프로그래밍 방식으로 완성하기

안녕하세요!

우리는 앱에서 계정을 생성한 사용자에게 Discourse 초대장을 보내고 있습니다. 이미 커뮤니티에 필요한 사용자 이름과 사용자 정의 필드를 보유하고 있지만, 사용자가 Discourse에서 이 정보를 다시 입력해야 합니다.

프로필의 해당 필드를 자동으로 채워 넣을 수 있는 방법이 있을까요?

감사합니다!

앱을 SSO 서버로 사용하는 것이 가장 좋다고 생각합니다. 그렇게 하지 않으려면, 앱을 통해 API로 사용자를 생성하고 해당 설정을 포함할 수 있습니다. Discourse API 역공학 방법에서 방법을 알아볼 수 있습니다.

API를 통해 사용자를 생성하는 것은 원치 않습니다. 사용자가 직접 비밀번호를 설정하고 사용자 이름을 선택하도록 하고 싶기 때문입니다. 모든 데이터를 포함하여 단계별 사용자를 생성하는 방법을 조사해 보았지만, API를 통해 이를 구현하는 것은 불가능한 것으로 보입니다.

고려할 수 있는 다른 옵션은 초대 기능을 확장하여 커스텀 필드와 프로필 정보를 허용하는 것입니다.

웹훅/API 호출을 통해 앱에서 필드를 가져오는 플러그인이 어떨까요? 플러그인이 get yoursite/user/<email_address>와 같은 요청을 수행하고, 사용자 레코드가 업데이트될 때 사용자 필드를 채워 넣도록 할 수 있습니다. 그런 식으로요. 그래도 SSO가 여전히 가장 좋은 해결책인 것 같습니다.

네, https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/13045를 확인해 보세요. 이것이 단일 로그인(SSO)의 정확한 사용 사례입니다.

다만 SSO를 사용하면 사용자를 초대할 필요가 없습니다. 이미 애플리케이션에 로그인되어 있는 경우, 해당 사용자는 discourse 인스턴스를 방문하면 자동으로 로그인됩니다. 만약 애플리케이션에 로그인되어 있지 않은 경우, discourse가 로그인을 위해 해당 애플리케이션으로 리다이렉트한 후, 사용자는 자동으로 discourse로 다시 리다이렉트됩니다.

문제는 우리가 Discourse를 SSO 제공자로 사용하고 있으며, 지금까지 잘 작동해 왔다는 점입니다. 하지만 그렇다고 해서 Discourse가 SSO 제공자를 소비하는 쪽이 더 쉬울 것이라는 데에는 동의합니다.

@blake SSO 제공자로 Discourse를 사용 중이므로, 이를 어떻게 진행할지 아직 고민하고 있습니다. 지금은 다른 서비스로 마이그레이션하는 것은 현재 설정을 많이 변경해야 해서 원하지 않습니다. 다른 아이디어가 있으신가요? 커스텀 코드를 작성해야 하는 것은 문제가 되지 않지만, 기존 설정을 최소한으로 변경하고 싶습니다.

감사합니다!

현재 설정과 이 두 문장 때문에 혼란스럽습니다. 이렇게 하면 단일 로그인(Single-sign-on)이 아니라 이중 로그인(double-sign-on)이 되는 것 아닌가요?

만약 Discourse가 SSO 제공자라면, 앱의 신규 사용자는 먼저 계정을 만들기 위해 Discourse로 리다이렉트되고, 인증이 완료된 후 다시 앱으로 리다이렉트되어야 합니다. 이렇게 하면 모든 정보가 한 곳에 모입니다.

현재 제 이해를 바탕으로 하면, 앱을 SSO 제공자로 전환하고 Discourse가 이를 소비하도록 하는 것이 좋겠습니다. 또는 사용자를 먼저 Discourse에서 가입하도록 리다이렉트하고 다시 앱으로 돌려보내는 방식도 가능합니다. 현재 설정이 그렇게 되어 있지 않은 것 같아서요?

그렇지 않다면, 이중 로그인 설정을 원하신다면 사용자가 앱에서 가입할 때 API를 통해 자동으로 Discourse에 사용자를 생성하고, 사용자에게 절대 알려주지 않는 랜덤 비밀번호를 설정하며, 앱에서 입력한 프로필 정보를 자동으로 채워 넣으세요. 그리고 초대장을 보내는 대신, 새 계정에 대해 Discourse의 비밀번호 재설정 페이지로 보내세요.

우리는 앱을 통해 등록을 처리하지만, 우리 앱에는 세션 관리 기능이 없습니다. 우리는 단순히 사용자에게 과금하고 그들의 정보를 데이터베이스에 저장할 뿐입니다.

우리는 사용자가 먼저 계정을 생성하도록 요구해야 하며, 우리가 제거하려는 단계가 바로 이것입니다. 우리는 가능한 한 프로세스를 간편하게 만들고 싶습니다.

이것은 우리가 투입하고 싶지 않은 노력입니다. 세션 관리, 비밀번호 복구, 2FA 인증 및 Discourse가 제공하는 모든 기능을 추가하는 데는 상당한 작업이 필요합니다.

우리는 이것이 원하지 않는 방식입니다.

처음에는 이렇게 하였습니다. 하지만 랜덤 사용자명을 설정해야 하며, 이는 우리가 원하는 방식이 아닙니다. 작동은 하겠지만, 커뮤니티를 사용하기 전에 사용자가 자신의 계정을 개인화할 수 있도록 하고 싶습니다.

하지만 네, 결국 답은 외부 SSO 제공자를 사용하는 것 같습니다. 이 방향으로 진행할 것이며, Discourse를 활용하여 우리가 원하는 방식으로 작동하게 하려는 고민을 그만두겠습니다.

도움 주셔서 감사합니다 @blake!

아니면 앱을 없애고 Discourse Subscriptions로 결제 관리를 맡기시는 건 어떨까요?