如何设置基本用户权限,以便用户无法运行" Hubot die"等命令。或者" Hubot显示存储"?
我可以看到有一个名为hubot-auth的脚本,但这似乎是为了在其他脚本中实现它而不是控制现有命令。
答案 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所做的那样),然后在每个脚本中检查它而不是硬编码用户名。
希望有所帮助。