#-- 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
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
\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
"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
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
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
: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
: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
: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