]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/core/auth.rb
HTML IRCification: don't modify the receiver; provide an ircify_html! method to modif...
[user/henk/code/ruby/rbot.git] / lib / rbot / core / auth.rb
index 1fec6e4b4530e0862ce476a472367fccb7efaf65..eee500456c241e135fb919018c572d98bc359cd8 100644 (file)
@@ -1,6 +1,11 @@
 #-- vim:sw=2:et\r
 #++\r
-\r
+#\r
+# :title: rbot auth management from IRC\r
+#\r
+# Author:: Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com>\r
+# Copyright:: (C) 2006,2007 Giuseppe Bilotta\r
+# License:: GPL v2\r
 \r
 class AuthModule < CoreBotModule\r
 \r
@@ -89,7 +94,7 @@ class AuthModule < CoreBotModule
     splits = params[:args]\r
 \r
     has_for = splits[-2] == "for"\r
-    return usage unless has_for\r
+    return usage(m) unless has_for\r
 \r
     begin\r
       user = @bot.auth.get_botuser(splits[-1].sub(/^all$/,"everyone"))\r
@@ -140,7 +145,13 @@ class AuthModule < CoreBotModule
 \r
   def auth_view_perm(m, params)\r
     begin\r
-      user = @bot.auth.get_botuser(params[:user].sub(/^all$/,"everyone"))\r
+      if params[:user].nil?\r
+        user = get_botusername_for(m.source)\r
+        return m.reply("you are owner, you can do anything") if user == @bot.auth.botwoner\r
+      else\r
+        user = @bot.auth.get_botuser(params[:user].sub(/^all$/,"everyone"))\r
+        return m.reply("owner can do anything") if user.username == "owner" \r
+      end\r
     rescue\r
       return m.reply("couldn't find botuser #{params[:user]}")\r
     end\r
@@ -182,6 +193,11 @@ class AuthModule < CoreBotModule
     "welcome, #{get_botusername_for(user)}"\r
   end\r
 \r
+  def auth_auth(m, params)\r
+    params[:botuser] = 'owner'\r
+    auth_login(m,params)\r
+  end\r
+\r
   def auth_login(m, params)\r
     begin\r
       case @bot.auth.login(m.source, params[:botuser], params[:password])\r
@@ -231,8 +247,12 @@ class AuthModule < CoreBotModule
       case topic\r
       when "syntax"\r
         return "a permission is specified as module::path::to::cmd; when you want to enable it, prefix it with +; when you want to disable it, prefix it with -; when using the +reset+ command, do not use any prefix"\r
+      when "set", "reset", "[re]set", "(re)set"\r
+        return "permissions [re]set <permission> [in <channel>] for <user>: sets or resets the permissions for botuser <user> in channel <channel> (use ? to change the permissions for private addressing)"\r
+      when "view"\r
+        return "permissions view [for <user>]: display the permissions for user <user>"\r
       else\r
-        return "permissions (re)set <permission> [in <channel>] for <user>: sets or resets the permissions for botuser <user> in channel <channel> (use ? to change the permissions for private addressing)"\r
+        return "topics: syntax, (re)set, view"\r
       end\r
     when "user"\r
       case topic\r
@@ -258,7 +278,7 @@ class AuthModule < CoreBotModule
         return "user show, enable|disable, add|rm netmask, set, reset, tell, create, list, destroy"\r
       end\r
     else\r
-      return "#{name}: login, whoami, permission syntax, permissions, user"\r
+      return "#{name}: login, whoami, permission syntax, permissions [re]set, permissions view, user"\r
     end\r
   end\r
 \r
@@ -738,21 +758,16 @@ auth.map "user create :name :password",
   :defaults => {:password => nil},\r
   :auth_path => ':manage:'\r
 \r
-auth.map "user cancel destroy :name :password",\r
+auth.map "user [cancel] destroy :name :password",\r
   :action => 'auth_destroy_user',\r
   :defaults => { :password => nil },\r
   :auth_path => ':manage::destroy:'\r
 \r
-auth.map "user destroy :name :password",\r
-  :action => 'auth_destroy_user',\r
-  :defaults => { :password => nil },\r
-  :auth_path => ':manage:'\r
-\r
-auth.map "user copy :source :dest",\r
+auth.map "user copy :source [to] :dest",\r
   :action => 'auth_copy_ren_user',\r
   :auth_path => ':manage:'\r
 \r
-auth.map "user rename :source :dest",\r
+auth.map "user rename :source [to] :dest",\r
   :action => 'auth_copy_ren_user',\r
   :auth_path => ':manage:'\r
 \r
@@ -776,6 +791,11 @@ auth.map "whoami",
   :action => 'auth_whoami',\r
   :auth_path => '!*!'\r
 \r
+auth.map "auth :password",\r
+  :action => 'auth_auth',\r
+  :public => false,\r
+  :auth_path => '!login!'\r
+\r
 auth.map "login :botuser :password",\r
   :action => 'auth_login',\r
   :public => false,\r
@@ -798,7 +818,7 @@ auth.map "permissions reset *args",
   :action => 'auth_edit_perm',\r
   :auth_path => ':edit::reset:'\r
 \r
-auth.map "permissions view for :user",\r
+auth.map "permissions view [for :user]",\r
   :action => 'auth_view_perm',\r
   :auth_path => '::'\r
 \r