9

如何设置基本用户权限,使用户无法运行“Hubot die”或“Hubot show storage”之类的命令?

我可以看到有一个名为 hubot-auth 的脚本,但这似乎是为了在其他脚本中实现它而不是控制现有的命令。

4

3 回答 3

10

在使用 Hubot 的自动化和监控一书(无耻插件)中有一个小章节。摘抄:

分配角色

只有管​​理员用户可以分配角色。您不必在分配之前创建角色。您所要做的就是告诉 Hubot 谁在使用hubot <user> has <role> role. 而且您不再需要使用那些神秘的 ID:

Tomas     hubot Jesse Pinkman has developer role
Hubot     Tomas: Ok, Jesse Pinkman has the 'developer' role.

使用以下命令检查分配的角色hubot what roles does <user> have?

Tomas     hubot what roles does Jesse Pinkman have?  
Hubot     Tomas: Jesse Pinkman has the following roles: developer.

要删除某人的角色,请使用hubot <user> does not have <role> role

Tomas     hubot Jesse Pinkman does not have developer role
Hubot     Tomas: Ok, Jesse Pinkman doesn't have the 'developer' role.

您可以将多个角色分配给多个用户。

应用角色

现在,是时候公布坏消息了。虽然 Hubot Auth 非常灵活,但您必须编辑脚本才能应用这些角色。幸运的是,没有太多可编辑的。有一个简单的函数可以检查用户是否具有角色 - robot.Auth.hasRole(msg.envelope.user, '<role>')。这是您在脚本中使用它的方式:

module.exports = (robot) ->
  robot.respond /do dangerous stuff/i, (msg) ->
    if robot.auth.hasRole(msg.envelope.user, 'developer')
      doDangerousStuff(msg)
    else
      msg.reply "Sorry, you don't have 'developer' role"

  doDangerousStuff = (msg) ->
    msg.send "Doing dangerous stuff"
于 2014-07-12T05:49:05.190 回答
2

如原始答案中所述,您必须是 Hubot 管理员才能分配角色。要定义 Hubot 管理员,您必须将HUBOT_AUTH_ADMIN环境变量设置为管理员 ID 的逗号分隔字符串。如果您使用的是 Slack,您可以使用他们的API来确定应该是管理员的用户的 ID。对于 Slack,这些 ID 看起来像U123ABC1D.

于 2015-09-25T07:32:00.670 回答
0

我可以看到这是在脚本hubot die中定义的。ping.coffee也许您可以在运行命令时检查授权用户?

像这样的东西?

if msg.message.user.name in [authorized_user1, authorized_user2,..]
  # Do more stuff

其他显示存储脚本也可以这样做。我不确定这是否是最好的方法,因为您必须修改所有不想执行的脚本。

一种更简洁的方法是在启动时将用户列表设置为 env 变量(有点像 hubot-auth 所做的),然后在每个脚本中检查它,而不是硬编码用户名。

希望有帮助。

于 2014-07-11T13:04:03.637 回答