如何设置Hubot基本权限?

时间:2014-07-10 12:44:44

标签: hubot

如何设置基本用户权限,以便用户无法运行" Hubot die"等命令。或者" Hubot显示存储"?

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

3 个答案:

答案 0 :(得分:8)

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"

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

这样的东西?

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

对于其他节目存储脚本也可以这样做。我不确定这是否是最好的方法,因为你将不得不修改你不想执行的所有脚本。

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

希望有所帮助。