Я хочу отозвать права администратора у одного профиля, но кнопки «Отозвать» нет. У других учётных записей «Персонал» на моём сайте такая кнопка есть.
Подскажите, пожалуйста, почему так происходит и как это исправить?
Я хочу отозвать права администратора у одного профиля, но кнопки «Отозвать» нет. У других учётных записей «Персонал» на моём сайте такая кнопка есть.
Подскажите, пожалуйста, почему так происходит и как это исправить?
Просто проверяю: вы не пытаетесь лишить себя прав администратора на аккаунте, в который вы сейчас вошли?
Нет. Это другой аккаунт… Я назвал его ‘Newsbot’, и он использовался для получения RSS-лент.
Теперь я хочу удалить эти сообщения.
Существует ли email этой учётной записи в вашем файле app.yml как разработчика? Или вы выдали права разработчика через консоль?
Пользователи, указанные в файле сборки .yml как DEVELOPERS, не могут быть удалены через интерфейс по соображениям безопасности:
## TODO: Список email-адресов через запятую, которые будут назначены администраторами и разработчиками
## при первой регистрации. Пример: 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'incredible_undeletables@myamazingdomain.com'
Вам нужно удалить их из файла сборки .yml и пересобрать систему.
Альтернативный, но не рекомендуемый и не поддерживаемый (я предполагаю) способ — изменить статус администратора (булево значение) в таблице users для этого пользователя на FALSE напрямую в базе данных. Примечание: я сам этого никогда не делал (никогда не отзывал права, но добавлял модераторов таким образом), но подобные действия (прямое вмешательство в БД с объектами, с которыми вы не полностью знакомы) могут иметь непредвиденные последствия, поэтому это не рекомендуется, пока не исчерпаны все другие варианты (и обязательно убедитесь на 100%, что у вас есть рабочая резервная копия БД перед этим!).
Проверьте ваш файл .yml — проблема, скорее всего, там.
Этот пользователь не указан в моём файле .yml.
Это так раздражает, когда даже администраторы лишены доступа к базовым функциям обслуживания форума.
Тогда вы можете попробовать выполнить что-то подобное напрямую в базе данных:
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;