관리자만 사용할 수 있는 것이 아니라, 누구나 사용할 수 있는 테마를 만드는 방법은 무엇인가요?
무엇을 말씀하시는지 정확히 이해가 되지 않습니다. 조금 더 자세히 설명해 주시겠어요?
내 포럼에서 많은 문제가 발생하고 있습니다. 이미 메타(meta)에서 이 문제에 대해 언급한 적이 있으며, Discourse에는 해당 옵션을 비활성화하는 기능이 없어 위험한 관리자 기능을 끄지 못했습니다. 그래서 포럼에서 접근 권한이 있는 사용자들에게 위험한 옵션들을 제거하기 위해 CSS로 임시 해결책을 마련했습니다. 그런데 CSS를 적용한 결과, 저 자신에게서도 해당 옵션들이 사라졌습니다. IP 확인, BAN, 모든 게시물 삭제 등의 옵션이 모두 사라진 것입니다. 모든 테마에서 CSS를 제거했으며, 이제 하나의 테마만 CSS를 적용하지 않은 상태로 두어 옵션들을 확인할 수 있도록 하되, 이 테마는 나 혼자만 사용 가능하게 하고 싶습니다.
왜 CSS와 테마를 사용해 관리자를 관리하고 있는지 모르겠지만, 그건 올바른 방법이 아닙니다. 신뢰도를 이용해 카테고리 관리자를 지정하고, 관리자도 더 신중하게 선택하세요. CSS와 테마를 통해 관리자 기능을 제한하려는 시도는 오히려 더 많은 문제를 만들 가능성이 높습니다.
저는 CSS를 통해 관리자(모더레이터) 역할을 수정함으로써 모든 문제를 해결했습니다. 매우 복잡한 상황이었으며, 유일한 실질적인 해결책이 바로 이것이었죠. 이미 카테고리 모더레이션을 시도해 보았지만, 제 포럼에는 적합하지 않았고, 요구사항에도 맞지 않았습니다. 제 문제를 해결할 수 있었던 유일한 방법은 CSS 수정이었습니다. Discourse는 관리자에게와 동일한 모더레이터 옵션을 제공하기 때문에, 이것이 유일한 해결책이었습니다. 하지만 이제는 CSS 수정이 없는 테마를 사용할 수 있는 방법을 찾아야 합니다. 그러면 그 테마를 사용할 때마다 CSS 수정을 꺼야 하는 번거로움을 피할 수 있을 테니까요.
무슨 일이 있었는지 조금 설명해 드릴게요: 저는 브라질에 살고 있는데, 여기에는 2억 1,430만 명의 주민이 살고 있으며 그중 대부분은 실업 상태이고 구매력이 없습니다. 많은 사람들이 인터넷을 오락 수단으로 사용하므로, 제 포럼은 그런 환경에 잘 맞습니다. 하지만 제 포럼의 존재가 다른 포럼을 크게 위협하고 있으며, 그 포럼은 이미 제 포럼에 수차례 공격을 감행했고, 제 관리자 중 많은 수를 매수했습니다. 수많은 관리자가 사용자를 삭제하고, 메시지를 지우고, IP 주소를 타인에게 유출하는 등 제 포럼을 정말로 파괴했습니다. 저는 이미 몇 달 동안 관리자 없이 지냈지만, 관리자가 없는 포럼을 운영하는 것은 매우 어렵습니다. 관리자를 다시 두려고 하지만, 아무리 잘 골라도 소용이 없습니다. 북유럽 국가들의 문화는 잘 모르지만, 적어도 제 나라의 포럼 업계 문화에서는 사람들이 이 일을 매우 심각하게 받아들이지 않고 쉽게 매수당합니다. 어느 시점에서는 돈이 더 큰 목소리를 내며, 그들은 자신의 권한을 이용해 제 포럼을 파괴할 수 있습니다. 제가 가진 유일한 해결책은 관리자가 관리자(administrators)와 동일한 권한을 갖지 못하게 하는 것이며, 그것이 유일한 해결책이었습니다. CSS를 통해 그것이 해결되었습니다.
이전에 이 주제로 스레드를 만든 적이 있었는데, 큰 논쟁이 벌어졌지만 결국 아무 결론도 나지 않았습니다. 많은 분들이 더 나은 기준으로 더 신뢰할 수 있는 사람들을 선택할 수 있도록 모더레이터를 더 잘 고르라고 조언해 주셨죠. 하지만 제가 활동하는 월드 포럼에는 그 조언이 적용되지 않았습니다. 유일한 해결책은 모더레이터의 권한(IP, BAN, 전체 게시글 삭제, 이메일 확인 등)을 일부 빼앗는 것이었는데, 그 결과 저 자신도 영향을 받게 되었습니다.
안녕하세요 ![]()
안전 모드(Safe Mode)를 사용하여 테마를 비활성화할 수 있습니다. (모더레이터와 동일한 방식입니다.)
사용자 지정 섹션을 사용하여 /safe-mode로 바로 이동할 수 있는 단축 경로를 만들 수 있습니다.
-
다음과 같이 사이드바에 사용자 지정 섹션을 만듭니다.
이렇게 보일 것입니다. (제목, 이름, 링크/safe-mode를 추가하세요)이 섹션을 공개하고 모든 사용자에게 표시체크박스를 선택하지 않았는지 확인하세요.
-
이 항목은 내비게이션 메뉴(사이드바)의 사용자 지정 섹션에 배치됩니다.
-
여기서 테마와 테마 구성 요소를 비활성화할 수 있습니다. ‘안전 모드 사용’ 버튼을 클릭하세요.
혹시 카테고리 관리자들을 확인해 보시는 건 어떨까요?
악의적인 사용자가 안전 모드를 발견하면 CSS 기반의 대응 조치는 효과를 발휘하지 못할 것입니다.
Discourse를 안전하게 보호하는 유일한 방법은 백엔드에서 권한을 신중하게 할당하는 것입니다.
즉, 이러한 변경 사항을 적용하려면 사용자 지정 플러그인이 필요합니다. 예산(예: 1,000달러에서 5,000달러?)이 없다면 카테고리 관리자나 tl4를 사용해 보셔야 합니다.
이미 여기서 이야기했습니다: ![]()
테마 컴포넌트를 통해 관리자 외에는 아무도 해당 요소를 볼 수 없도록 만드는 것이 가능할 것 같습니다.
하지만 안전 모드는 여전히 쉬운 우회 경로가 될 수 있습니다. 처음 예상했던 시간보다 훨씬 적게 걸려서, 간단하고 급조한 플러그인으로 해당 기능을 비활성화할 수 있을지도 모릅니다.
여기서 여러분이 하신 말씀에 거의 모두 동의합니다.
CSS 방식으로 진행하기를 정말 원하신다면, CSS 수정 사항이 관리자 외의 사용자들에게만 적용되도록 하는 방법은 다음과 같습니다:
테마의 Head 탭에 다음 내용을 작성하세요:
<script type="text/discourse-plugin" version="1.4.0">
let currentUser = api.getCurrentUser();
if (currentUser.admin == true) {
document.querySelector("body").classList.add("is-admin");
}
</script>
모든 CSS 규칙을 body:not(.is-admin) { (여러분의 CSS) } 형태로 감싸야 합니다. 예를 들어:
body:not(.is-admin) {
#main {
background: pink;
}
}
제 예시에서는 분홍색 배경이 관리자 사용자를 제외한 모든 사람에게 적용됩니다.
Discourse는 자동으로 그룹 기반 클래스를 <body>에 추가하므로, JS를 건너뛰고 다음과 같은 작업을 수행할 수 있어야 합니다
body:not(.group-admins) #main { background: pink; }
테스트 인스턴스에서 관리자로서 제가 가진 그룹별 클래스는 staff 외에는 없습니다(최신 Discourse 버전):
<body class="chat-enabled staff has-sidebar-page navigation-topics docked"
제가 볼 때 <html>이나 다른 태그에도 없습니다.
메타에서는 CSS Classes for Current User's Groups 을 사용하고 있으며, daniela의 경우에도 이 방법을 사용할 수 있습니다. ![]()
아, 그게 저를 혼란스럽게 한 거였군요. 저는 메타에서만 찾고 있었어요.
Canapin님 감사합니다.
너무너무 사랑해
이것을 보여줘서 고마워. 이 문제를 1년 넘게 풀지 못했거든



