저는 커뮤니티 백엔드로 Discourse를 API를 통해 사용하고 있습니다. 일반 사용자는 특정 카테고리에 접근할 수 없어야 하며, 주제(topic)를 생성하거나 주제 제목을 수정할 수 없도록 제한되어야 합니다. 하지만 스레드를 확인하고 답변을 달 수는 있어야 합니다. 이 모든 작업은 해당 사용자 대신 API(관리자 토큰 사용)를 통해 이루어져야 합니다. 이러한 기능을 적절한 보안 및 API 호출을 통해 구현할 수 있는 방법이 있을까요? 예를 들어, 일반 사용자 대신 제한된 카테고리에서 게시물을 강제 생성할 수만 있다면(관리자 키/사용자 사용) 충분할 텐데, API 문서에서 해당 사례를 찾을 수 없었습니다.
감사합니다!
감사합니다. 리버스 엔지니어링에 대해서는 알고 있지만, Discourse 프론트엔드에서 이를 가로채기 위한 유사한 사용 사례는 없습니다. 즉, 관리자 계정으로 로그인되어 있을 때 다른 사용자로 게시물을 생성할 방법이 없다는 뜻입니다.
현재 적용한 임시 해결책은 해당 카테고리에 대해 모든 사용자에게 보기/댓글 작성 권한을, 관리자에는 보기/댓글 작성/생성 권한을 부여하는 것입니다. 이렇게 하면 게시물은 "system"에 의해만 생성되므로(사용자가 제목을 임의로 변경할 수 없게 됩니다) 템플릿 원본 게시물이 함께 생성됩니다. 그런 다음 API 키를 사용하여 해당 생성된 게시물에서 다른 사용자로 댓글을 작성할 수 있습니다.
제가 도움을 드린 다른 그룹에서는 사용자가 Discourse에 로그인(아마도 SSO를 통해?)하여 본인 명의의 행동을 수행했던 것 같습니다. 이렇게 하면 Rails가 제공하는 모든 사용자 보호 기능을 활용할 수 있습니다. 단일 관리자 API 키로 모든 것을 처리하는 것은 재앙을 부르는 길처럼 보입니다.
하지만 현재 문제를 해결하기 위해 취할 수 있는 방법은 admin 계정으로 토픽을 생성한 후 소유권을 변경하는 것입니다. 이는 비교적 간단하게 수행할 수 있어야 합니다. (그리고 전체 트랜잭션의 시작과 끝 사이에 아무 문제가 발생하지 않기를 바라는 것뿐이죠.)
또 다른 가능성으로는 사용자 명의의 생성(create-as-user) 라우트를 추가하는 커스텀 플러그인을 만드는 것이 있습니다. (앞서 링크드 라우트를 자세히 살펴보지 않아서 이미 그런 기능이 있는지 확인하지는 못했습니다.)
하지만 더 생각해 볼수록(정말 무엇을 하려는지는 전혀 모르지만) 프론트엔드가 사용자로 로그인하여 사용자의 신원으로 API와 상호작용하도록 만드는 것이 더 적합하다고 생각합니다.