【问题标题】:How to setup Hubot basic permissions?如何设置 Hubot 基本权限?
【发布时间】:2014-07-10 12:44:44
【问题描述】:

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

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

【问题讨论】:

  • 投反对票的人能否解释一下他们投反对票并要求关闭它的原因?

标签: hubot


【解决方案1】:

Automation and Monitoring with 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"

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      这样的?

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

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

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

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-05-05
        • 2012-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 2010-09-08
        • 2016-09-11
        • 2016-08-12
        相关资源
        最近更新 更多