Groups API - 그룹 멤버십 수동 동기화?

여기서 내가 스스로를 궁지로 몰아넣은 것 같습니다.

저는 멤버십 사이트(Rails 기반)를 운영하고 있으며, 모든 사용자 그룹에 대해 제한된 포럼 그룹을 자동으로 생성하고 데이터를 채우기 위해 Discourse API를 사용하고 있습니다. 이 방식은 잘 작동하고 있으며, 각 그룹에 시작용 위키 포스트까지 제공하고 있습니다. (제 코드를 공유했습니다.)

그런데 가끔 수동으로 그룹 멤버십을 동기화해야 하는 문제에 부딪혔습니다. 예를 들어, 제 사이트에서 그룹을 병합하거나, 코디네이터가 포럼에서 실수로 사람을 삭제/추가한 경우 등이 있습니다. 이를 위해 저는 모든 Discourse 그룹 멤버를 삭제한 후, 해당 그룹에 있어야 할 멤버들을 다시 추가하려고 합니다.

첫 번째 문제: Discourse API에는 그룹 멤버를 전체 삭제(DELETE ALL)하는 기능이 없는 것 같습니다. 따라서 삭제할 모든 사람의 이름을 명시적으로 지정해야 합니다.

두 번째 문제: 어떤 이유에서인지 Discourse 그룹의 현재 멤버십을 가져올 때 그룹 ID가 아니라 그룹 이름(NAME)을 요구합니다. 제 사이트에는 Discourse가 관련 PUT/POST/DELETE 요청에 사용하는 것이 그룹 ID이기 때문에, 그룹 ID만 저장해 두었습니다.

세 번째 문제: 당연한 이야기일 수 있지만, ID를 제공하여 그룹 이름을 가져오는 방법을 찾지 못하고 있습니다. 200개 이상의 모든 그룹을 가져와서 ID가 일치하는 그룹을 찾을 때까지 반복해야 한다면, 이는 터무니없는 수준의 번거로움이며 Rails의 관례에도 어긋납니다.

제가 놓치고 있는 것이 무엇일까요?

수정: @codinghorror 님은 지난번에 정말 많은 도움을 주셨습니다 - 이번에는 어떤 생각이 있으신가요?

확신은 없는데, @justin이나 @blake가 다가오는 근무 주에 이 부분을 확인해 줄 수 있을까요?

이 부분에서는 당신이 옳은 것 같습니다. ID 번호로는 그룹 자원에 접근할 수 없고, 이름으로만 접근할 수 있습니다.

여기서 언급된 ID는 실제로 ID가 아니라 이름입니다.

/g/<group-name> 라우트를 현재 주제(topic)와 카테고리(category)를 처리하는 방식과 일치하도록 리팩토링하는 것이 합리적일 것입니다. 예를 들어 /g/<group-name>/<id> 또는 /g/patrons/41과 같은 형식을 사용하고, /g/41이 동일한 방식으로 동작하도록 허용하는 것입니다.

그 문제가 수정될 때까지, 당신이 원하는 것을 달성하는 유일한 방법은 다음과 같습니다:

  1. ID와 함께 그룹 이름을 저장하기
  2. g/<group-name>/members.json에 GET 요청을 보내서 멤버 목록을 가져오기
  3. 재동기화를 위해 각 멤버를 삭제하도록 해당 목록을 순회하기

정말 멋진 문제를 찾아내셨네요. 이 문제를 제기해 주셔서 감사합니다, @Judith! 그룹은 정말 강력하고 무한한 가능성을 가지고 있습니다! :rocket: 최근에도 이 문제를 인지했는데, 워드프레스에서 그룹 멤버십을 유지하는 작업을 살펴보고 있을 때였습니다. 가입 및 프로필 업데이트 시, 사용자가 거주하는 국가와 지역, 사용 가능한 언어, 관심 있는 테마 등을 기준으로 그룹에 자동으로 추가/제거할 수 있다면 정말 좋겠습니다.

@justin님의 그룹 이름과 그룹 ID를 모두 저장하자는 제안은 좋은 아이디어이며, 이 통합 작업을 진행 중인 팀에 전달하겠습니다.

UI에 추가되었으면 하는 또 다른 기능은 관리자나 그룹 소유자가 그룹의 모든 멤버를 일괄 삭제하고 다시 추가할 수 있는 기능입니다. 이를 통해 워드프레스에서 내보낸 내역을 기반으로, 워드프레스에서 프로필을 업데이트할 때 자동으로 그룹에 추가/제거하는 시스템이 구축되어 있지 않더라도 수시로 그룹 멤버십을 수동으로 초기화할 수 있게 됩니다.

메인 사이트와 Discourse 사이에 SSO를 사용하는 것을 권장합니다. 이렇게 하면 그룹 멤버십 관리를 무료로 제공받을 수 있으며, 멤버십을 간단하게 업데이트하기 위한 sync_sso 엔드포인트를 사용할 수 있습니다.

처음에는 SSO만 사용했지만, 사용자가 로그인할 때만 그룹 멤버십이 업데이트되는 문제에 부딪혔습니다. 사용자가 재선되지 않거나, 그룹 접근 권한을 상실하거나, 또는 그룹 접근 권한을 얻게 되는 경우(제한된 그룹 서브포럼의 메시지에 대한 이메일 알림을 받아야 하는 경우)에는 API를 통해 해당 사용자를 추가하거나 제거해야 합니다.

sync_sso는 바로 이 문제를 해결하기 위해 존재합니다! 멤버십이 변경될 때마다 사실상 “가상” SSO 로그인을 트리거하여 사용자를 완전히 동기화할 수 있습니다.

안녕하세요!

이 기능이 이제 사용 가능한가요? 이 부분에 대한 업데이트가 있나요?

감사합니다!

새로운 업데이트가 있나요? @tobiaseigen