next\r
end\r
if "+-".include?(x[0])\r
- warns << ArgumentError("please do not use + or - in front of command #{x} when resetting") unless setting\r
+ warns << ArgumentError.new("please do not use + or - in front of command #{x} when resetting") unless setting\r
else\r
- warns << ArgumentError("+ or - expected in front of #{x}") if setting\r
+ warns << ArgumentError.new("+ or - expected in front of #{x}") if setting\r
end\r
cmds << x\r
else # parse locations\r
end\r
end\r
}\r
- warns << "trailing comma" if wants_more\r
+ warns << "trailing comma" if want_more\r
warns << "you probably forgot a comma" unless last_idx == ar.length - 1\r
return cmds, locs, warns\r
end\r
\r
- def auth_set(m, params)\r
- cmds, locs, warns = parse_args(params[:args])\r
+ def auth_edit_perm(m, params)\r
+\r
+ setting = m.message.split[1] == "set"\r
+ splits = params[:args]\r
+\r
+ has_for = splits[-2] == "for"\r
+ return usage unless has_for\r
+\r
+ begin\r
+ user = @bot.auth.get_botuser(splits[-1].sub(/^all$/,"everyone"))\r
+ rescue\r
+ return m.reply("couldn't find botuser #{user}")\r
+ end\r
+ return m.reply("you can't change permissions for #{user.username}") if user == @bot.auth.botowner\r
+ splits.slice!(-2,2) if has_for\r
+\r
+ cmds, locs, warns = parse_args(splits, setting)\r
errs = warns.select { |w| w.kind_of?(Exception) }\r
+\r
unless errs.empty?\r
m.reply "couldn't satisfy your request: #{errs.join(',')}"\r
return\r
end\r
- user = params[:user].sub(/^all$/,"everyone")\r
- begin\r
- bu = @bot.auth.get_botuser(user)\r
- rescue\r
- return m.reply("couldn't find botuser #{user}")\r
- end\r
+\r
if locs.empty?\r
locs << "*"\r
end\r
ch = m.target.to_s if loc == "_"\r
end\r
cmds.each { |setval|\r
- val = setval[0].chr == '+'\r
- cmd = setval[1..-1]\r
- bu.set_permission(cmd, val, ch)\r
+ if setting\r
+ val = setval[0].chr == '+'\r
+ cmd = setval[1..-1]\r
+ user.set_permission(cmd, val, ch)\r
+ else\r
+ cmd = setval\r
+ user.reset_permission(cmd, ch)\r
+ end\r
}\r
}\r
rescue => e\r
end\r
@bot.auth.set_changed\r
debug "user #{user} permissions changed"\r
- m.reply "ok, #{user} now also has permissions #{params[:args].join(' ')}"\r
+ m.okay\r
+ end\r
+\r
+ def auth_view_perm(m, params)\r
end\r
\r
def get_botuser_for(user)\r
can_set = [:password]\r
can_addrm = [:netmasks]\r
can_reset = bools + can_set + can_addrm\r
+ can_show = can_reset + ["perms"]\r
\r
case cmd.to_sym\r
\r
:action => 'auth_autologin',\r
:auth_path => '!login!'\r
\r
-auth.map "permissions set *args for :user",\r
- :action => 'auth_set',\r
+auth.map "permissions set *args",\r
+ :action => 'auth_edit_perm',\r
:auth_path => ':edit::set:'\r
\r
-auth.map "permissions reset *args for :user",\r
- :action => 'auth_reset',\r
+auth.map "permissions reset *args",\r
+ :action => 'auth_edit_perm',\r
:auth_path => ':edit::reset:'\r
\r
auth.default_auth('*', false)\r