]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/botuser.rb
Move irc_send_penalty method of string in ircsocket.rb, and rework flood control...
[user/henk/code/ruby/rbot.git] / lib / rbot / botuser.rb
index d1d82ba5090a2d275ba05570d2a1926d49e72c5a..41fca6cf9847316cd0d071826a0a5f36b2ee08eb 100644 (file)
@@ -110,6 +110,7 @@ module Irc
     # This class describes a permission set\r
     class PermissionSet\r
 \r
+      attr_reader :perm\r
       # Create a new (empty) PermissionSet\r
       #\r
       def initialize\r
@@ -159,6 +160,12 @@ module Irc
     end\r
 \r
 \r
+    # This is the error that gets raised when an invalid password is met\r
+    #\r
+    class InvalidPassword < RuntimeError\r
+    end\r
+\r
+\r
     # This is the basic class for bot users: they have a username, a password,\r
     # a list of netmasks to match against, and a list of permissions.\r
     #\r
@@ -167,6 +174,7 @@ module Irc
       attr_reader :username\r
       attr_reader :password\r
       attr_reader :netmasks\r
+      attr_reader :perm\r
       attr_writer :login_by_mask\r
       attr_writer :autologin\r
 \r
@@ -191,6 +199,11 @@ module Irc
         str << ">"\r
       end\r
 \r
+      # In strings\r
+      def to_s\r
+        @username\r
+      end\r
+\r
       # Convert into a hash\r
       def to_hash\r
         {\r
@@ -582,7 +595,7 @@ module Irc
         k = n.to_sym\r
         raise "No such BotUser #{n}" unless include?(k)\r
         if @botusers.has_key?(ircuser)\r
-          return true if @botusers[ircuser].name = n\r
+          return true if @botusers[ircuser].username == n\r
           # TODO\r
           # @botusers[ircuser].logout(ircuser)\r
         end\r
@@ -650,9 +663,18 @@ module Irc
         raise "Could not check permission for user #{user.inspect} to run #{cmdtxt.inspect} on #{chan.inspect}"\r
       end\r
 \r
-      # Checks if command _cmd_ is allowed to User _user_ on _chan_\r
+      # Checks if command _cmd_ is allowed to User _user_ on _chan_, optionally\r
+      # telling if the user is authorized\r
+      #\r
       def allow?(cmdtxt, user, chan=nil)\r
-        permit?(user, cmdtxt, chan)\r
+        if permit?(user, cmdtxt, chan)\r
+          return true\r
+        else\r
+          # cmds = cmdtxt.split('::')\r
+          # @bot.say chan, "you don't have #{cmds.last} (#{cmds.first}) permissions here" if chan\r
+          @bot.say chan, "#{user}, you don't have '#{cmdtxt}' permissions here" if chan\r
+          return false\r
+        end\r
       end\r
 \r
     end\r