일반 사용자가 스태프 전용 태그를 적용할 수 있습니다

어제 사이트를 업데이트했는데, 비스태프(일반) 사용자가 자신의 게시물에 ‘featured’ 태그를 붙이고 있는 것을 방금 발견했습니다. 이 태그는 스태프 전용으로 설정되어 있어 이런 일이 일어나서는 안 됩니다. 해당 사용자로 위장해 확인해 보니, 게시물을 작성할 때 제한된 태그에 접근할 수 있었습니다. 메타 사이트에서도 재현을 시도해 보았지만, 일반 사용자에게는 태그 기능이 제공되지 않는 것 같습니다?

로컬 개발 사이트에서 문제를 재현해 보려 했지만, 아직까지는 성공하지 못했습니다. 해당 문제가 사이트의 모든 카테고리에서 발생하는지, 아니면 특정 카테고리에서만 비스태프 사용자가 스태프 태그를 추가할 수 있는지 확인해 주실 수 있을까요? 문제를 재현하는 방법에 대한 힌트가 있다면 알려주시면 감사하겠습니다.

알겠습니다. 여기에서 무슨 일이 일어나고 있는지 더 깊이 살펴본 후 다시 알려드리겠습니다. 다만, 시간이 조금 걸릴 수 있습니다.

네, TL-0과 TL-1 사용자로 안전 모드에서 테스트해 봤는데, 우리 포럼의 모든 카테고리에서 스태프 태그에 접근할 수 있습니다. 스태프 전용 목록에 있는 다른 태그들도 마찬가지입니다. 스태프 전용 태그 그룹의 권한을 '모두가 태그를 사용할 수 있음’으로 리셋했다가 다시 '다음 그룹만 사용할 수 있음’으로 변경해 보았지만, 차이가 없었습니다. 다른 테스트해 볼 방법이 있을까요?

다른 태그 그룹이 정의되어 있거나, 위의 스크린샷이 사이트의 유일한 그룹인가요? 테스트에 사용된 사용자들은 다른 그룹의 멤버인가요?

상반된 규칙을 가진 여러 태그 그룹을 만들 수 있습니다. 사용자가 어떤 태그 그룹에서든 태그를 사용할 권한이 있다면, 다른 그룹에서 해당 태그를 사용할 수 없다고 규정하는 규칙이 무효화됩니다.

이것은 제가 사용하는 모든 그룹입니다. 실행한 테스트는 어떤 그룹에도 속하지 않는 기본 사용자로 수행했습니다.

공통 태그: 모든 사람이 사용 가능

이벤트: 이벤트 카테고리에서만 사용 가능:

'접근(access)'이라고 하셨을 때, 주제에 태그를 추가할 수 있다는 뜻인지, 아니면 태그를 보고 클릭할 수 있다는 등의 뜻인가요?

‘스태프 태그(Staff Tags)’ 태그 그룹(ba-tips, cant-reproduce, featured 등)에 있는 태그는 staff 그룹에 속한 사용자만 주제에 추가할 수 있지만, 모든 사용자에게 표시됩니다. 이는 모든 사용자가 주제 상단에 있는 태그를 볼 수 있고, 해당 태그가 붙은 다른 주제를 보기 위해 태그를 클릭할 수 있다는 등의 것을 의미합니다.

TL0 사용자가 ‘스태프 태그’ 태그(예: ‘ba-tips’)를 주제에 추가할 수 있다면 이는 문제입니다. 스크린샷에 따라 로컬 Discourse 인스턴스에서 태그/태그 그룹을 재현했으며(각 태그 그룹의 태그를 위 스크린샷의 각 첫 번째 세 개로 제한), 제 TL0/TL1 사용자는 ‘새 주제’ 버튼을 통해 주제를 생성한 후 편집하는 방식으로도 'ba-tips’를 주제에 추가할 수 없습니다. 다른 방법/UI 경로를 통해 태그를 추가할 수 있나요?

제이미, 답변해 주셔서 감사합니다. 제가 충분히 구체적으로 설명하지 못한 것 같아 죄송합니다. 최신 버전으로 업그레이드한 후 테스트를 다시 실행해 보았지만, 결과는 동일했습니다. 재현 방법은 다음과 같습니다:

  1. TL0 또는 TL1 사용자로 로그인합니다.
  2. 안전 모드로 전환하고 모든 것을 비활성화합니다.
  3. 아무 카테고리를 선택합니다.
  4. 새 주제를 생성합니다.
  5. 스태프 전용인 ‘Featured’ 태그를 선택합니다.
  6. ‘create topic’ 버튼을 클릭합니다.
  7. 게시물이 생성되고 featured 태그가 추가됩니다.

관련이 있을 것 같은 다른 것도 하나 발견했습니다: 더 이상 tag.json 라우트에 접근할 수 없습니다. 예를 들어 다음과 같은 경로요:

Topics tagged featured

업데이트: 아니, 괜찮습니다. /tags/가 /tag/로 이름이 변경되어 자동화 작업 중 일부가 깨진 것 같습니다.

불행히도 이 문제에 대한 테스트 케이스를 작성하는 데 여전히 어려움을 겪고 있습니다. 제가 취한 단계는 다음과 같습니다:

  1. 커밋 6490fac881에서 새 사이트를 생성했습니다.
  2. 관리자 사용자를 생성했습니다: jamie.wilson
  3. SiteSetting을 활성화했습니다: tagging enabled
  4. 다음 태그들을 생성했습니다:
    360-renders
    add-ons
    advertisement
    conference
    contest
    meetup
    no-ads
    promotion-offered
    ba-tips
    cant-reproduce
    featured
  5. 제공된 스크린샷에 따라 태그 그룹을 생성했습니다 (디버깅 목적으로 각 그룹당 최대 3개의 태그만 사용).
  6. ‘Events’ 카테고리를 생성하고, ‘Restrict these tag groups to this category’ 값으로 'Events’를 설정했습니다.
  7. 관리자 사용원이 ‘Site Feedback’ 카테고리에서 ‘ba-tips’ 태그를 가진 주제를 생성했습니다. 이 태그는 staff 그룹에 속합니다.
  8. 관리자 사용원을 로그아웃했습니다.
  9. 새 사용자를 생성했습니다 (이메일 링크를 통해 활성화): normal.user
  10. normal.user로 로그인하여 Uncategorized 또는 Site Feedback에 새 주제를 생성했습니다. 사용 가능한 태그: 360-renders, add-ons, advertisement

  1. Events에 새 주제를 생성했습니다. 사용 가능한 태그: conference, contest, meetup

(표시되지 않음)

  1. 관리자 사용원은 normal.user의 게시물에 제한된 태그를 추가할 수 있습니다:

  1. 관리자 사용원은 세 개의 태그를 모두 볼 수 있습니다:

  1. normal.user는 두 개의 태그만 볼 수 있습니다:

DiscourseTagging.permitted_tag_names(Guardian.new(User.find_by_username('normal.user')))
["360-renders", "add-ons", "advertisement", "conference", "contest", "meetup"]
DiscourseTagging.hidden_tag_names(Guardian.new(User.find_by_username('normal.user')))
["no-ads", "promotion-offered"]

다른 누군가가 이 문제를 재현할 수 있을까요? 현재로서는 제가 재현할 수 없는 상태입니다.

문제를 찾은 것 같습니다: #featured 태그가 스태프 전용 목록과 ‘공통 태그’ 목록에 모두 포함되어 있었습니다. 어떻게 그렇게 되었는지는 정확히 모르겠지만, 스태프 권한을 확인해 보겠습니다. 시간을 낭비하게 해서 죄송하지만, 도움을 주셔서 정말 감사드립니다! :pray:

괜찮습니다! 근본 원인을 찾았으니 새로운 기능이 의도대로 작동하고 있다는 데에 조금 더 확신을 가질 수 있게 되어 기쁩니다.

설정 문제가 해결되었으니, 이제 이 기능이 여러분과 여러분의 사이트에 유용하게 활용되기를 바랍니다. 어떻게 작동하는지 알려주시면 좋겠습니다.