]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
Permissions can now be set and reset correctly
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 6 Aug 2006 16:11:02 +0000 (16:11 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Sun, 6 Aug 2006 16:11:02 +0000 (16:11 +0000)
lib/rbot/core/auth.rb

index b905c8c32147521cec5c5adcc01a2c81d424c0d0..5662c119eb318af31a24ce0e7574f09b75619916 100644 (file)
@@ -54,9 +54,9 @@ class AuthModule < CoreBotModule
           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
@@ -78,24 +78,35 @@ class AuthModule < CoreBotModule
         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
@@ -108,9 +119,14 @@ class AuthModule < CoreBotModule
           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
@@ -119,7 +135,10 @@ class AuthModule < CoreBotModule
     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
@@ -250,6 +269,7 @@ class AuthModule < CoreBotModule
     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
@@ -656,12 +676,12 @@ auth.map "login",
   :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