문제없습니다! disallowed_groups가 도움이 될 것 같아 기쁩니다. 해당 PR을 이제 병합했습니다.
disallowed_groups와 resolve_group_memberships를 사용할 수 있게 되었으므로, 이제 모든 공식 테마와 컴포넌트를 점검해야 합니다. @moin 님도 시간이 나시면 본인의 테마와 컴포넌트에 대해 동일한 작업을 해주시면 좋겠습니다. 공식 저장소에 변경 사항을 적용한 후, OP의 stable 버전으로의 전환을 본격적으로 진행하기를 정말 원하기 때문입니다.
현재 anonymous_users와 logged_in_users에 의존하거나 이를 사용하는 핵심 작업이 많으며, everyone 그룹을 삭제하기를 정말 원합니다.
객체 설정에서 제가 무엇을 잘못하고 있나요? disallowed_groups를 객체에 설정하지 않아도 anonymous_users 그룹이 표시되지 않는다는 것을 알아차렸습니다(즉, 현재는 disallowed_groups를 설정하든 아니든 제 컴포넌트의 목록에 차이가 없습니다). 다른 그룹 ID로 테스트해 봤는데, disallowed_groups를 사용하는 방법(또는 구문)에 뭔가 잘못되고 있는 것 같습니다. 어떤 것을 사용하든 효과가 없는 것 같으니까요.
테마 컴포넌트에 두 클래스(anonymous_users와 logged_in_users)를 추가하기 위해 간단한 PR을 열었습니다. 하지만 정말로 필요한지는 아닌 것 같습니다(아래 메모 참고).
아직 제대로 테스트해 보지는 못했습니다(ㅋㅋ)만, 꽤 직관적인 것 같습니다. 코드는 현재 사용자가 존재하는지 확인하고, 존재하면 logged_in_users 멤버가 되고, 그렇지 않으면 anonymous_users가 됩니다.
메모: 해당 컴포넌트 없이도 이러한 익명/로그인 상태 CSS를 사용할 수 있습니다. Discourse가 기본적으로 .anon을 자동으로 추가하므로, 컴포넌트를 설치하지 않고도 익명 사용자와 로그인 사용자를 위한 CSS를 구현할 수 있습니다. 다만 이 PR은 단순히 새로운 그룹 규칙을 사용하기 위한 코드를 추가하는 것입니다.
예를 들어, 다음과 같은 코드가 있습니다:
// 익명 사용자의 경우
@if $hide_this_from_anon {
html.anon {
.something {
display: none;
}
}
}
// 로그인 사용자의 경우
@if $hide_this_from_logged_in_users {
html:not(.anon) {
.something {
display: none;
}
}
}
그렇게 했습니다. 하지만 여전히 이 변경이 제가 이 값을 수정한 후에야 해당 컴포넌트를 추가하는 포럼에만 도움이 되는 것 같습니다. 이미 컴포넌트를 사용 중인 포럼에는 새로운 기본값이 적용되지 않습니다(이것은 보통 좋은 일입니다!). 따라서 여전히 컴포넌트를 이미 사용 중인 사용자에게 예상치 못한 동작 변경이 발생하는 문제를 보고 있습니다.
또한, 관리자가 제가 업데이트에서 허용되지 않는 그룹(disallowed group)으로 추가하는 그룹으로 설정을 구성한 경우 어떤 일이 발생하는지 아시나요?
이 컴포넌트가 많은 포럼에서 사용되지 않는다고 생각해서 크게 걱정하지 않고 병합했지만, 마이그레이션과 허용되지 않는 그룹 설정은 다른 테마 개발자들도 관련이 있을 수 있습니다.
위에서 작성한 게시글에서 이 작업이 언제 이루어져야 하는지 질문했습니다. 새 그룹이 모든 포럼에서 정상적으로 작동하는지 확신하지 못한 채 마이그레이션을 진행하면 다른 문제도 발생할 수 있고, 관리자는 해당 변경 사항을 켜고 끌 수 있습니다. 그래서 적절한 시기에 마이그레이션을 진행하는 것이 불가능해 보입니다.
그렇다고 생각합니다. 그렇지 않았다면 이 버그에 대한 해결책이 달랐을 수도 있었을 테니까요.
저도 그렇게 생각합니다. user_in_x는 프론트엔드가 인식하지 못하는 그룹도 검사합니다. 이는 해당 그룹이 관리자만 볼 수 있거나, everyone과 같이 기본적으로 가시성이 제한되어 있기 때문입니다. 따라서 어떤 것을 사용하느냐에 따라 결과가 달라질 수 있으므로, 두 가지를 조합하면 의도하지 않은 결과가 발생할 수 있습니다.
Moin, 감사합니다. 정확히 말씀하신 대로입니다. @gormus, 실제 그룹 ID가 여전히 표시되는 유일한 곳은 테마 설정의 관리자 UI입니다.
이전에 제가 올린 내용만으로 명확하지는 않을 수 있지만, anonymous_users와 logged_in_users는 다가오는 변경 사항이 활성화되지 않아도 언제든지 사용할 수 있습니다. 이 두 항목은 몇 달 전에 독립적으로 추가했기 때문입니다. 다가오는 변경 사항의 주요 기능은 다음과 같습니다:
따라서 어떤 경우든, everyone이 사용되는 모든 곳에서 이를 제거하고从现在부터 anonymous_users와 logged_in_users만 사용한다면 안전합니다.
오늘은 사이트 설정에서 everyone을 완전히 제거하기 위해(현재는 카테고리 설정은 그대로 두고) 제가 수행해야 할 나머지 작업에 대한 계획을 세우고, 그 내용을 여기에 게시할 예정입니다. 이렇게 하면 앞으로 동일한 이해를 바탕으로 진행할 수 있을 것이고, 작업을 진행하면서 이 계획을 계속 업데이트해 나가겠습니다.
하지만 변경 사항이 비활성화되어 있으면 인터페이스에서 그룹이 표시되지 않습니다. 관리자는 해당 그룹에 대한 설정을 변경할 수 없습니다. 따라서 "everyone"을 disallowed_group으로 추가하면 방문자에게 표시되도록 구성할 수 있는 그룹이 더 이상 표시되지 않습니다. 저에게 "사용 가능(usable)"이란 단순히 작동하는 것뿐만 아니라 표시되는 것을 의미합니다. 여전히 변경 사항을 비활성화할 수 있으므로, 새로운 그룹에만 의존하는 것을 "안전한(safe)"이라고 부르지는 않겠습니다.
음, 맞아요. 이 disallowed_group 문제가 사라지려면 다가오는 변경 사항이 비활성화된 상태에서 추가로 수정해야 할 부분이 몇 가지 있습니다:
anonymous_users와 logged_in_users가 그룹 선택기에 아예 포함되어 있지 않습니다. 이제 여기에서 이들을 허용하는 것이 안전할 것 같으며, 그렇게 하면 다가오는 변경 사항이 꺼져 있어도 everyone을 disallowed_groups에 추가했는지 여부가 중요하지 않게 됩니다.
다가오는 변경 사항이 꺼져 있는 경우 anonymous_users를 존중하도록 Guardian::AnonymousUser#in_any_groups?를 수정해야 합니다.
사이트 설정에서 수행하는 것과 동일한 방식으로, 테마 설정에도 0 (everyone) → 5 (logged_in_users) 읽기 시간 별칭을 추가해야 합니다.
다가오는 변경 사항이 아직 선택 사항이고 비활성화된 동안, 그룹 선택기에서 everyone에 (legacy) 표시를 추가하는 것도 고려해 볼 수 있습니다.