특정 프로필의 관리자 권한을 취소하고 싶은데, ‘취소’ 버튼이 없습니다. 내 사이트의 다른 ‘스태프’ 계정에는 버튼이 있습니다.
이유와 해결 방법을 알려 주실 수 있을까요?
특정 프로필의 관리자 권한을 취소하고 싶은데, ‘취소’ 버튼이 없습니다. 내 사이트의 다른 ‘스태프’ 계정에는 버튼이 있습니다.
이유와 해결 방법을 알려 주실 수 있을까요?
현재 로그인 중인 계정에서 관리자 권한을 취소하려고 하는 건 아닌지 확인하는 거예요?
아니요. 다른 계정입니다… '뉴스봇’이라고 지었는데, RSS 피드를 가져오는 데 사용했습니다.
이제 그 게시물들을 삭제하고 싶습니다.
이 계정의 이메일이 app.yml 파일에 개발자로 등록되어 있나요? 아니면 콘솔을 통해 개발자 권한을 부여한 것인가요?
보안상의 이유로 .yml 빌드 파일에 DEVELOPERS로 나열된 사용자는 UI에서 삭제할 수 없습니다:
## TODO: 초기 가입 시 관리자 및 개발자로 지정될 쉼표로 구분된 이메일 목록
## 예: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: `incredible_undeletables@myamazingdomain.com'
.yml 빌드 파일에서 해당 사용자를 제거하고 다시 빌드해야 합니다.
대안으로, 권장하지는 않으며 지원되지도 않는 방법(제 추측으로는)은 데이터베이스의 users 테이블에서 해당 사용자의 관리자 상태(불리언 값)를 직접 FALSE로 변경하는 것입니다. 참고: 저는 이렇게 한 적이 없습니다(권한을 취소한 적은 없지만, 이 방식으로 모더레이터를 추가한 적은 있습니다) 하지만, 익숙하지 않은 것을 데이터베이스에서 직접 건드리는 이러한 작업은 의도치 않은 결과를 초래할 수 있으므로, 다른 모든 방법이 실패했을 때만 권장하며(작업 전에 데이터베이스의 작동하는 백업이 100% 준비되어 있는지 반드시 확인하세요!).
.yml 파일을 확인해 보세요… 문제가 그곳에 있을 가능성이 매우 높습니다.
이 사용자는 내 .yml 파일에 나열되어 있지 않습니다.
관리자조차도 기본적인 포럼 유지 관리 기능에 접근할 수 없을 때 정말 답답합니다.
그렇다면 데이터베이스(DB)에서 직접 다음과 같은 방법을 시도해 볼 수 있습니다:
update users set admin = false where username = 'user_name_of_rouge_user';
여기서:
그리고:
관리자 권한을 가진 문제 사용자를 발견했는데, 관리자 패널에서 권한을 취소할 수 없는 상황이므로 제가 이 경우 취할 조치입니다.
추측이지만 혹시 Discobot을 커스터마이징하여 이름을 Newsbot으로 변경한 건가요? 이 봇은 시스템 사용자로 간주되며, 관리자 권한을 취소할 수 없습니다.
Newsbot이 실제로 discobot인지 확인하려면 프로필 페이지로 가서 이메일 주소를 확인해 보세요:
봇의 이메일은 discobot_email로 표시됩니다.
네, 정확히 그렇게 했습니다. 이 Discobot 프로필을 RSS 피드를 가져오는 데 사용했는데, 이제 이를 제거하려고 합니다. 프로필은 그대로 두어도 되며, 모든 게시글/토픽만 삭제하고 싶습니다.
개발자가 아니므로, 간단한 단계로 설명해 주시면 감사하겠습니다.
좋아요, 여기서는 관리자 권한에 대해 실제로 알고 싶지 않다는 거죠. 목표가 게시물 삭제인가요? 앞으로는 현재 단계가 목표 달성에 도움이 될 거라고 생각하는 것이 아니라, 최종 목표를 알려주세요.
특정 사용자의 모든 게시물을 삭제하는 rake 태스크는 없는 것 같습니다. 몇 가지 테스트를 해보고 다시 알려드리겠습니다.
좋습니다. 다음 방법으로 사용자의 모든 게시물을 삭제할 수 있습니다. 서버 접근 권한이 필요합니다.
cd /var/www/discourse
sudo ./launcher enter app
rails c
newsbot이라고 가정하고 있습니다. 그렇지 않다면 명령어를 반드시 수정해야 합니다.id = User.find_by_username('newsbot').id
Post.where(user_id: id).each do |p|
PostDestroyer.new(Discourse.system_user, p).destroy
end;