如何删除所有管理员的帖子

我想撤销单个管理员的权限,但没有“撤销”按钮。我网站上的其他“工作人员”账户都有这个按钮。

请问这是什么原因以及如何解决?

1 个赞

只是想确认一下,您是否正试图撤销您当前登录账号的管理员权限?

2 个赞

不,这是另一个账号……我把它命名为“新闻机器人”,用于抓取 RSS 源。

我现在想删除那些帖子。

1 个赞

该账户的电子邮件是否在您的 app.yml 文件中作为开发者存在?还是您通过控制台授予了开发者权限?

1 个赞

出于安全原因,在 .yml 构建文件中列为 DEVELOPERS 的用户无法通过 UI 删除:

 ## TODO: 列出将在初始注册时设为管理员和开发者的逗号分隔的邮箱列表,例如 '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';

其中:

  • ‘user_name_of_rouge_user’ 是一个字符串。

以及:

  • false 是一个布尔值。

如果有一个拥有管理员权限的异常用户,而我需要撤销其权限但无法在管理面板中操作,我就会这样做。

1 个赞

随便猜一下——你是不是曾 自定义 Discobot 并将其重命名为 Newsbot?该机器人被视为系统用户,无法撤销其管理员权限。

你可以通过访问其个人资料页面并检查其电子邮件来确认 Newsbot 是否确实是 discobot:

该机器人的电子邮件将显示为 discobot_email

8 个赞

是的,我们正是这样做的。这个 Discobot 配置文件曾被用来拉取 RSS 订阅源,现在我们希望将其移除。配置文件可以保留,我只需要删除所有相关的帖子/主题。

我不是开发人员,如果能提供简单的操作步骤,我们将不胜感激。

好的,所以您实际上并不关心管理员权限。您的目标是删除帖子吗?建议今后直接告诉我们您的最终目标,而不是您认为有助于实现该目标的当前步骤。

我不认为我们有用于删除特定用户所有帖子的 rake 任务。让我测试一些方法,稍后回复您。

好的。以下方法允许您删除某用户的所有帖子。您需要服务器访问权限。

  1. SSH 登录到运行 Discourse 的服务器。
  2. 访问您 Discourse 实例的 Rails 控制台。
    cd /var/www/discourse
    sudo ./launcher enter app
    rails c
    
  3. 获取要删除的用户的 ID,然后销毁该用户的所有帖子。此示例假设用户名为 newsbot,如果不是,请务必修改命令:
    id = User.find_by_username('newsbot').id
    Post.where(user_id: id).each do |p|
      PostDestroyer.new(Discourse.system_user, p).destroy  
    end;
    
4 个赞