diff -r 45164bc2567a -r 508400fc5282 permissions.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/permissions.php Tue Jan 20 22:08:07 2009 -0500 @@ -0,0 +1,72 @@ +whois($nick); + if ( !$whois || ( $whois && !$whois['identified']) ) + { + if ( defined('LIBIRC_DEBUG') ) + echo "[!!!] Denied action {$params['context']} to {$nick} (whois check failed)\n"; + if ( !$quiet ) + $irc->privmsg($nick, "Please identify to services before you do that. (If you are already identified, wait 20 seconds for the whois cache to clear and try again)"); + return false; + } + + // Is the user an admin? + if ( in_array('admin', $permissions[$nick]) && $params['context'] !== 'alert' ) + { + if ( defined('LIBIRC_DEBUG') ) + echo "[!!!] Granted action {$params['context']} to {$nick} (has admin rights)\n"; + return true; + } + + switch($params['context']): + case 'channel': + if ( isset($permissions[$nick]['channel']) && is_array($permissions[$nick]['channel']) ) + { + if ( in_array($params['channel'], $permissions[$nick]['channel']) ) + { + if ( defined('LIBIRC_DEBUG') ) + echo "[!!!] Granted action {$params['context']} to {$nick} in channel {$params['channel']} (on channel whitelist)\n"; + return true; + } + } + if ( defined('LIBIRC_DEBUG') ) + echo "[!!!] Denied action {$params['context']} to {$nick} in channel {$params['channel']} (not on channel whitelist)\n"; + return false; + default: + eval(eb_fetch_hook('permission_check')); + if ( isset($result) ) + { + $perm = $result ? 'Granted' : 'Denied'; + if ( defined('LIBIRC_DEBUG') ) + echo "[!!!] $perm action {$params['context']} to {$nick} (plugin overridden)\n"; + return $result; + } + $result = in_array($params['context'], $permissions[$nick]); + $perm = $result ? 'Granted' : 'Denied'; + if ( defined('LIBIRC_DEBUG') ) + echo "[!!!] $perm action {$params['context']} to {$nick} (default handler)\n"; + return $result; + endswitch; +} +