如何设置基本的用户权限,使用户不能运行诸如"Hubot死“或"Hubot显示存储”之类的命令?
我可以看到有一个名为hubot-auth的脚本,但这似乎是为了在其他脚本中实现它,而不是控制现有的命令。
发布于 2014-07-12 05:49:05
在基于Hubot的自动化与监控的书(无耻的插头)中有一小章。节选:
分配角色
只有管理员用户才能分配角色。您不需要在分配之前创建一个角色。你所要做的就是告诉Hubot谁是谁使用hubot <user> has <role> role。你再也不用用那些神秘的身份证了:
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"发布于 2015-09-25 07:32:00
正如在最初的答案中所述,为了分配角色,您必须是一个Hubot管理员。要定义Hubot管理员,必须将HUBOT_AUTH_ADMIN环境变量设置为以逗号分隔的管理员ID字符串。如果您使用Slack,您可以使用他们的API接口来计算应该是管理员的用户的ID。对于Slack,这些ID看起来类似于U123ABC1D。
发布于 2014-07-11 13:04:03
我可以看到hubot die是在ping.coffee脚本中定义的。也许您可以在运行命令时对授权用户进行检查?
像这样吗?
if msg.message.user.name in [authorized_user1, authorized_user2,..]
# Do more stuff对于另一个显示存储脚本也可以这样做。我不太确定这是否是最好的方法,尽管,因为您将不得不修改所有的脚本,您不希望被执行。
一种更简洁的方法是在启动时将用户列表设置为env变量(就像hubot-auth所做的那样),然后在每个脚本中检查它,而不是硬编码用户名。
希望这能有所帮助。
https://stackoverflow.com/questions/24676910
复制相似问题