특정 “나쁜” 그룹에 속한 사용자에게 최신(Latest) 페이지에서 특정 주제를 숨기고 싶습니다. 테마 컴포넌트로 이 작업이 가능하다고 생각하지만, 다른 아이디어도 환영합니다. 이는 일회성 사용 사례이며, 매개변수를 편집하기 위한 UI는 필요하지 않습니다.
비슷한 시도가 있어 시작점으로 참고할 수 있을 것 같습니다. 이 접근 방식은 api.modifyClass를 사용하여 최신 페이지의 주제(<tr> 태그)에 클래스를 추가한 후, 몇 줄의 CSS로 해당 클래스를 display: none으로 설정하는 것입니다. modifyClass에서 사용자를 가져와서 해당 사용자가 “나쁜” 그룹의 멤버인 경우 클래스를 추가할 수 있다고 가정합니다.
(이 방법이 권한에는 영향을 주지 않음을 인지하고 있습니다. 사용자는 여전히 카테고리나 검색 뷰에서 주제를 볼 수 있고, 이메일을 계속 수신하며, 제 트릭을 알아내면 로컬 CSS를 편집할 수도 있습니다. 저는 단순히 사용자를 귀찮게 하여 어떤 조치를 취하게 만들고 싶을 뿐입니다. 모든 제약 조건을 고려할 때, 이 접근 방식이 작동할 것이라고 생각합니다.)
한 가지를 빠뜨렸는데, 최신(Latest)에서 업데이트된 서비스 약관(Terms of Service)이라는 한 가지 주제만 여전히 보여줄 수 있도록 하고 싶습니다.
저도 이 방식이 별로 마음에 들지는 않지만, 제가 생각해 낼 수 있는 최선의 방법입니다. 목표는 모든 사용자에게 업데이트된 약관에 서명하도록 하는 것이며, 평소보다 더 높은 중요성을 부여하는 것입니다. 기존 사용자가 약관을 수락하도록 강제하는 방법에 대해 How to force existing users to accept ToS 에서 논의가 있었는데, Discourse Policy가 도움이 될 수 있다는 의견이 있었습니다. 하지만 Policy는 아무것도 강제하지 않으며, 새로운 약관의 중요성 때문에 사용자를 귀찮게 할 파란색 알림(Blue bubble)보다 더 강력한 것이 필요합니다. 몇 년 전에 정책을 수락하면 사용자를 특정 그룹에 추가하는 플러그인을 개발한 적이 있는데, 일부 상황에서는 작동했지만 이번 경우에는 어떻게 적용해야 할지 모르겠습니다.
우리는 이미 상당히 복잡한 그룹과 카테고리 체계를 갖추고 있기 때문에, 각 카테고리의 권한을 'everyone’에서 'tos-acceptors’로 단순히 변경할 수는 없습니다. 카테고리 권한이 부울 논리(Boolean logic)를 지원한다면, 'premium-group’과 ‘tos-acceptors’ 두 그룹 모두에 속한 사용자만 허용하도록 권한을 변경할 수 있을 것입니다. 하지만 현재는 이를 지원하지 않습니다.
사용자를 어떻게 귀찮게 할지에 대해서는 강한 의견이 없습니다. Discourse Policy에 내장된 강제 기능이 있다면 그것을 사용했을 것입니다. 하지만 이번 경우에는 파란색 알림만으로는 부족합니다.
또한, 사용자가 ‘tos-acceptors’ 그룹의 멤버가 아니라면 영구 링크(permalink)로 리다이렉트하는 것도 잠시 고려해 보았습니다. 영구 링크 URL에 쿼리 파라미터로 사용자 ID 또는 사용자 이름을 붙일 수 있다면 여전히 옵션이 될 수 있습니다. Docusign 등으로 리다이렉트하는 경우, 웹훅(webhook)을 설정하여 사용자가 ‘tos-acceptors’ 그룹에 추가되도록 하고, 그러면 리다이렉트가 중단되도록 할 수 있습니다. 이 계획이 더 나은 방법이라고 생각하시나요?