그룹에 기존 사용자 추가 및 새 사용자 초대

더 간단한 방법이 있는지 알고 싶은 특정 사용 사례가 있습니다.

  • SSO를 통해 접속하는 사용자 중 일부는 활성 포럼 계정이 없습니다.
  • 비공개 포럼 접근을 위해 사용자를 특정 포럼 그룹에 정기적으로 추가해야 합니다.
  • 사용자가 그룹에 추가되기 전에 활성 포럼 계정이 있는지 여부는 알 수 없습니다.

예를 들어:
매달 직원 한 명이 비공개 포럼 접근 자격이 있는 100개 이상의 계정 목록을 받습니다. 해당 계정에는 SSO 사용자 이름과 이메일 주소가 있지만, 아직 포럼 계정이 없을 수 있습니다.

:question: 이미 포럼 계정이 있는 사용자는 그룹에 추가하고, 계정이 없는 사용자는 포럼에 초대(그룹에 자동 추가)하는 간단한 방법이 있을까요?

그룹 페이지의 멤버 추가 버튼을 사용하면 쉼표로 구분된 사용자 이름 목록을 붙여넣을 수 있습니다. 유효한 사용자 이름인 경우 해당 사용자는 그룹에 추가됩니다. 사용자 이름이 유효하지 않은 경우(즉, 포럼 계정이 아직 없는 경우)에는 추가가 실패하여 그룹에 포함되지 않습니다.

성공적으로 그룹에 추가된 사용자 목록을 수동으로 검토하여 추가되지 않은 사용자 이름을 식별한 뒤, 해당 사용자에게 포럼 초대장을 보내는 방법(예: (Superseded) Multiple Use Invite Links) 외에는, 기존 포럼 사용자와 신규 가입 예정 사용자를 혼합하여 초대와 그룹 추가를 결합할 수 있는 간단한 방법이 있을까요?

이상적으로는 한 번에 이 작업을 수행할 수 있는 방법을 찾고 싶습니다.

가능하지만 여전히 매우 번거로운! 다단계 우회 방법은 다음과 같은 형태일 수 있습니다:

  1. 활성 및 비활성 사용자 이름 목록을 반환하는 Data Explorer 쿼리에 이름 목록을 입력합니다.
  2. 활성 사용자 이름 목록에 대해 "그룹에 추가"를 사용합니다.
  3. 비활성 사용자 모두에게 맞춤형 초대 링크를 보냅니다.

이 과정을 더 간소화할 수 있는 방법이 있다면 기꺼이 듣고 싶습니다 :slight_smile:

데이터 탐색기를 사용할 수 없습니다. 이 도구는 읽기 전용입니다.

이런 것은 새로 만들어야 합니다.

add_groups와 remove_groups SSO 파라미터를 사용하여 사용자를 Discourse 그룹에 추가하는 방법을 살펴보셨나요? SSO 제공 사이트에서 존재하는 사용자의 경우, Discourse 계정을 생성하고 sync_sso 루트로 API 호출을 하여 Discourse 그룹에 추가할 수 있습니다. 이 설정에 대한 자세한 내용은 여기에서 확인할 수 있습니다: Sync SSO user data with the sync_sso route. 이 방식이 여러분에게 적합해 보인다면, 설정 방법에 대해 더 자세한 정보를 드릴 수 있습니다.

Simon, 감사합니다. 유망해 보입니다.

저희의 모든 사용자는 SSO 사이트에 존재합니다(시장(marketplace)의 판매자입니다). 하지만 현재 그 중 일부만 포럼을 사용하도록 Discourse 계정을 생성합니다. SSO는 고객과 판매자 양쪽을 모두 커버합니다. 모든 고객을 위해 Discourse 계정을 자동으로 생성하고 싶지 않습니다(고객 수가 너무 많기 때문입니다!). 하지만 모든 판매자를 위해 그렇게 한다면 상황이 크게 단순해질 것입니다.

이 경우, 판매자가 특정 시장이나 서비스를 사용하기 시작할 때에만 해당 판매자에게 비공개 포럼 그룹에 대한 액세스 권한을 부여해야 합니다.

예를 들어, 시장 1의 판매자가 SSO 계정을 가지고 있습니다. 이 시점에서 포럼에 로그인하여 Discourse 계정을 생성할 수 있습니다.

나중에 그 판매자가 시장 2에 대한 액세스 권한을 얻게 되면, SSO 계정에 해당 변경 사항이 기록됩니다. 해당 시장을 위한 사용자 정의 그룹(및 비공개 포럼 카테고리)이 있습니다.

  • 이 시점에 이미 Discourse 계정이 있다면, 비공개 포럼 영역을 볼 수 있도록 그룹을 업데이트해야 합니다.
  • 아직 Discourse 계정이 없다면, 관련 그룹이 포함된 계정을 생성해 주기를 원합니다.

현재 팀은 쉼표로 구분된 사용자 이름 목록을 사용하여 “그룹에 추가” 기능을 사용하고 있습니다. 사용자가 이미 Discourse 계정을 가지고 있다면 그룹에 액세스 권한이 부여되고… 아직 포럼에 가입하지 않았다면 아무런 동작이 수행되지 않습니다.

마지막으로 그룹에 일괄 추가된 이후에 Discourse 계정을 생성한 사용자를 포착하기 위해, 팀은 일반적으로 그룹 멤버십을 업데이트할 때 지난 X개월 동안 자격을 갖춘 모든 사용자 이름을 포함합니다. 이는 상당히 번거로운 과정입니다.

add_groups SSO 매개변수를 포함하여 sync_sso 라우트에 API 호출을 수행하면 기존 사용자는 해당 그룹에 추가됩니다. 사용자가 아직 Discourse 계정을 가지고 있지 않으면 계정이 생성되고 해당 그룹에 추가됩니다. remove_groups SSO 매개변수를 사용하여 유사한 방식으로 사용자를 그룹에서 제거할 수도 있습니다. 이 작업에 sync_sso 라우트를 사용하는 또 다른 이점은 변경 사항이 적용되도록 사용자가 Discourse에서 로그아웃했다가 다시 로그인할 필요가 없다는 것입니다.

팀에 PHP/WordPress 예제 코드가 도움이 된다면, 다음 링크에서 구현 내용을 확인할 수 있습니다: https://github.com/discourse/wp-discourse/blob/master/lib/utilities.php#L378. 링크한 파일에는 WP Discourse 플러그인을 확장하기 위해 사이트에서 사용할 수 있는 유틸리티 함수들이 포함되어 있습니다. 이것이 정적(static) 함수를 사용하는 이유입니다.

시몬, 고마워! 그 방법이 이상적이야. 지금 쓰는 방법보다 훨씬 좋아 :slight_smile: