管理员和版主的“普通模式”(例如类似“sudo”)

我是 Fedora discourse 站点的管理员 参与者。我希望能够区分这两种角色。我知道有“官方帖子”的“员工颜色”,但我的意思是从 的角度来看。而不是在我登录时到处都是管理员扳手和按钮,我希望有一个菜单切换开关,可以打开和关闭管理员模式。

15 个赞
6 个赞

我们还有

这两个插件都可以让你伪装成管理员身份。例如,你可以从一个看起来更“官方”的账户发帖,而无法轻易地将它与你个人联系起来。

不过,我认为这并不是你想要的?你想让 Discourse 看起来/感觉起来像普通用户那样,然后“进入 sudo 模式”来启用所有额外的仅管理员功能?

我认为实现起来可能会相当困难……但会非常棒!很多年前(在我加入团队之前),我为自己的自托管论坛制作了这个组件。它的想法与此类似(让普通/管理员权限显而易见),但它仅限于一个非常具体的情况:

如果你的网站上还有其他容易引起混淆的、范围明确的情况,或许可以制作类似的样式组件,在执行仅管理员操作之前弹出警告。

7 个赞

是的,正是如此。我想这部分源于我多年担任系统管理员的经历,以及“最小必要权限”这一理念在我实践经验中的深刻烙印。(在生产系统的错误位置以 root 身份执行 rm -rf 是一种必经的洗礼!)

6 个赞

这也引起了我的兴趣。我目前的解决方法是同时使用 Chrome 和 Edge。在 Chrome 中,我使用我的管理员账户,但在 Edge 中,我登录管理员账户并模拟一个已过期电子邮件的用户账户。之所以模拟,只是因为我不想和 IT 部打交道。

在你的情况下,你可以创建一个第二个登录账户,然后一个浏览器用于管理员,一个浏览器用于用户。虽然不完美,但对我来说已经足够了。

5 个赞

这里有一个很好的例子说明了它的用途:

我不想意外违反预期的标签规则。(非管理员版主也能意外地这样做吗?我很难测试。)

我可以创建一个单独的管理员账户,并将我的主账户降级为普通用户,但我担心会错过重要的标记通知和消息。

4 个赞

这是由浏览器本身处理的,请参阅

4 个赞

这看起来只是允许我切换整个浏览器配置文件?这似乎没有帮助,除非你为管理员创建一个完全不同的 Discourse 用户帐户。

或者是我遗漏了什么。比如,@codinghorror,你的帐户在这里被列为管理员,所以我假设除非你正在做我完全误解的事情,否则你现在正以管理员模式运行。但你也在扮演网站用户的角色。你不会遇到(例如)你不小心创建了不符合配置标签规则的帖子的情况吗?(我曾不止一次地意外这样做过……)

2 个赞

并非如此——作为管理员的一部分是理解你所承担的责任以及你必须尊重的界限。如果你做不到这一点,就不应该拥有管理员权限。

但我也能理解那些想要做到极致安全的人,我建议他们使用两个账户,并在需要_绝对确定_时以普通用户身份登录,并且使用内置的浏览器配置文件支持,这很容易做到。

7 个赞

嗯,这有点像一直在 Linux 系统上以 root 身份运行。这不仅仅是尊重界限,而是当你没有意识到界限存在时,不要意外地越过它们。有些事情,比如进入设置,不会是意外发生的,但似乎有很多小事情,管理员会在没有任何指示表明有东西被绕过的情况下绕过配置。

正如我上面所说,拥有第二个账户并不是真的很好,因为我只会偶尔看到该账户的通知。

6 个赞

我理解您的担忧,但在实际操作中,至少在我参与这个项目的 10 年里,这并不是一个大问题。

(另外请注意,我们会自动撤销员工访问权限,并要求长期缺勤的员工重新验证电子邮件,我认为这会自动修复大部分问题)

1 个赞

你好 Matt!

为了增加一些细节,管理员用户可以充当普通用户,这将为所有与管理员相关的授权逻辑增加一个额外的维度。

尽管该逻辑大部分集中在 guardian.rb/lib/guardian/*.rb 中,但这种更改的复杂性和潜在错误会非常大,而且该功能的需求必须远远超过这些,但鉴于存在替代方案,它并没有。

1 个赞

是否可以考虑对一些更容易意外发生的事情提供更具针对性的“保护”?例如,一个设置:“员工必须遵守类别标记规则”?老实说,仅这一项就能解决我遇到的绝大多数_实际_问题。

或者……觉得其他一些事情,比如帖子长度,即使是管理员也仍然受到保护……也许实际上,这件事本身就是一种工作方式,而不是添加一个选项?

添加帖子长度将需要更改整个数据库。我们可以在每个字段的数据库中存储的最大字符数是有限的。

对我来说,这似乎是不合逻辑的,但也许我只是忽略了什么。我的意思是:

  • 如果我是管理员,并且我尝试发布一个比 min post length 短的帖子,我会收到正常的错误消息,并且无法继续。
  • 如果我是管理员,并且我尝试在一个需要标签的类别中发布一个没有标签的帖子,它会让我继续。

这里数据库里存储的是什么?

3 个赞

哦抱歉,我指的是帖子/标题长度——实际数据库字段中存储的帖子内容有一个最大长度限制。帖子标题也有类似的规则,数据库为该特定字段分配了最大字符数。

所以,如果管理员决定,“嘿,我想要一个 900,000 个字符的帖子”或“嘿,我想要一个标题为 500 个字符的帖子”,那么在不更改数据库的情况下是不可能的。

这确实是一个技术细节,但既然您提到了帖子长度,我便想到了这一点。

1 个赞

好的。是的,这正是我所担心的问题的完全相反的情况 :slight_smile:

我假设 OP 最初的意图是作为普通用户使用。对我来说,我也想感觉自己像一个普通用户:

  • 按钮更少
  • 无权访问版主/管理员操作
  • 使用简单的用户场景

升级或调整后,我想像普通用户那样与论坛互动,以避免误解。

对于我的社区来说,管理员模式仅在升级或测试插件和 UI 时才需要。也不需要一直担任版主。另外,我认为对于像我这样的人来说,临时切换到管理员模式比拥有两个账户更好。

OP 提到了 sudo。这几乎是相同的,只是反过来了。通常我临时切换到匿名用户来检查某些情况。无论如何,能够有一个像“模拟”一样在特殊普通账户下激活管理员模式的轻量级选项会很棒。

6 个赞

这让我想起了几天前发生的一件事。我正在迁移一个论坛。

我授予了旧论坛管理员管理员权限。
他是另外两个论坛的 Discourse 用户,也是版主。所以他对 Discourse 的界面和导航有点了解。

从他的管理员账户(我没有给他写任何指南,让他自己去发现)他告诉我,他很惊讶地发现他可以直接访问其他人的私信;他随意点击了一个公开的个人资料页面,看到了一系列私信,这让他很惊讶。

他告诉我,他突然想到“哦,看起来我到了不该去的地方”(意思是:如果他此时没有管理/版主目的,他不应该在这里)。

他不知道他可以像从他的个人资料中访问自己的私信一样,轻松地从界面访问这些消息。

几周前我也遇到了同样的情况,尽管我自 2018 年以来一直是两个 Discourse 论坛的管理员…… :sweat_smile:

在我看来,在用户公开个人资料的“私信”选项卡上,作为管理员,应该有一个图标或任何类型的警告,表明点击它是一个管理或版主操作,因为你会看到那些(在 99% 的用户心中)“私密”的东西。 :man_shrugging:

5 个赞

所以……我一直在考虑这个问题,并且我越来越不相信这会是一个大的改变。当然,有很多分散的逻辑,但它们最终不都是检查 is_adminis_staff 吗?

“sudo”只需要添加一个“staff_mode”切换,并且 is_staffis_admin 函数可以检查该切换的状态 user.adminuser.staff 标志。(当然,激活切换需要一个特殊的检查,该检查_仅_查看 user.adminuser.staff 值。)