비공개 카테고리가 아닌 곳에서 최신/상위 메시지를 모두 가져오는 방법?

현재 제 상황은 다음과 같습니다. 저는 SSO를 통해 Discourse를 사용하고 있습니다. 제 메인 사이트의 회원 중 아직 포럼에 방문해 본 적이 없는 사람이 있을 수 있는데, 최신/인기 주제를 보여줌으로써 그들이 클릭해서 놓치고 있는 내용을 확인하도록 유도하고 싶습니다.

하지만 그들이 처음으로 포럼에 진입하기 전까지는 Discourse 프로필이 없습니다. (SSO의 작동 방식상 최초 로그인 시 프로필이 생성됩니다.)

이로 인해 문제가 발생합니다. Discourse에 최신 활동을 요청할 때, 유효한 사용자를 지정해야 하는데(이 경우 해당 사용자는 존재하지 않음) 그렇지 않으면 그룹으로 보호되는 비공개 카테고리에 포함된 주제들이 목록에 포함됩니다.

현재 저는 제외해야 할 카테고리에 대한 하드코딩된 목록을 가지고 있고, 그 목록을 순회하며 해당 카테고리에 속한 주제를 제외하는 방식으로 처리하고 있습니다. 하지만 이는 이상적이지 않습니다. 그리고 고정된 주제(예: “새 포럼에 오신 것을 환영합니다” 등)는 항상 목록 상단에 위치하는데… 아마 그것들도 필터링할 수 있을 것 같습니다… 하지만 전체적으로 매우 해킹적인 방식처럼 느껴집니다. :slight_smile:

제가 하려는 일을 더 우아하게 달성할 수 있는 더 세련된 방법에 대한 제안이 있으신가요?

피드(latest.rss/top.rss)로 폴백할 수 있나요?

좋은 아이디어인데, 제 포럼이 완전히 비공개라서 내게는 잘 안 맞을 것 같아요. 그래서 유효한 Discourse 세션 없이 RSS 피드를 가져오려고 하면 로그인 페이지로 리디렉션되거든요.

그런 다음 최소 권한 수준의 더미 사용자를 생성하고, 해당 사용자의 뷰를 폴백으로 사용하시겠습니까?

특수한 그룹에 속하지 않은 새 사용자를 생성하고, 이 권한이 없는 사용자로 최신 데이터를 가져오기 위한 API 요청을 수행하세요.

음, 나쁘지 않네요. 여전히 좀 해킹적인 방식이지만, 지금 제가 하고 있는 것보다는 조금 덜 해킹적인 것 같습니다. "팬텀 기본 사용자(phantom basic user)"를 유지하는 방식이라면, 적어도 메인 사이트 코드에서 Discourse 카테고리 ID 목록을 수동으로 관리할 필요가 없으니까요.