From 0168a87290dccb8548b4943aca6a43b1a2567a96 Mon Sep 17 00:00:00 2001 From: David Phillips Date: Mon, 17 Sep 2018 17:50:53 +1200 Subject: Add must_id functionality back Fixes regression in acc3dd54a4c861e2cb02f0c3cb29ea40ce16f706 --- Plugin/Admin.pm | 58 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 27 deletions(-) (limited to 'Plugin/Admin.pm') diff --git a/Plugin/Admin.pm b/Plugin/Admin.pm index 3e600fb..622f772 100644 --- a/Plugin/Admin.pm +++ b/Plugin/Admin.pm @@ -31,28 +31,31 @@ sub configure { } sub is_admin { - my $who = shift; + my ($logger, $who, $ided) = @_; + if ($config->{must_id} and not $ided) { + $logger->("$who hasn't identified, but tried to use a command"); + return 0; + } my $is_admin = grep {$_ eq $who} @{$config->{admins}}; if (!$is_admin) { - # FIXME log this rather than print - print "$who isn't an admin, but tried to use a command\n"; + $logger->("$who isn't an admin, but tried to use a command"); } return $is_admin; } sub nick { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: nick " unless @arguments == 1; $irc->yield(nick => $arguments[0]); } sub say { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: say " unless @arguments >= 2; # Strip nick/channel from message @@ -62,9 +65,9 @@ sub say { } sub do_action { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: action " unless @arguments >= 2; # Strip nick/channel from message @@ -74,18 +77,18 @@ sub do_action { } sub join_channel { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: join [channel2 ...]" unless @arguments >= 1; $irc->yield(join => $_) for @arguments; } sub part { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: part [channel2 ...] [partmsg]" unless @arguments >= 1; my $nick = (split /!/, $who)[0]; @@ -96,9 +99,9 @@ sub part { } sub mode { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: mode " unless @arguments > 0; # FIXME should use $where if it's a channel (?) @@ -106,9 +109,9 @@ sub mode { } sub kick { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: kick [reason]" unless @arguments >= 2; # FIXME should use $where if it's a channel (?) @@ -121,9 +124,9 @@ sub kick { } sub topic { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: topic " unless @arguments >= 2; # Strip nick/channel from message @@ -134,18 +137,18 @@ sub topic { } sub reconnect { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); my $reason = $rest; $irc->yield(quit => $reason); } sub ignore { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: ignore " unless @arguments == 1; push @{$config->{ignore}}, $arguments[0]; @@ -154,9 +157,9 @@ sub ignore { } sub do_not_ignore { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; - return unless is_admin($who); + return unless is_admin($logger, $who, $ided); return "Syntax: don't ignore " unless @arguments == 1; my $target = $arguments[0]; @@ -170,7 +173,7 @@ sub do_not_ignore { } sub dump_ignore { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; return "Syntax: who are you ignoring?" unless @arguments == 0; @@ -179,8 +182,9 @@ sub dump_ignore { } sub exit { - my ($self, $irc, $logger, $who, $where, $rest, @arguments) = @_; + my ($self, $irc, $logger, $who, $where, $ided, $rest, @arguments) = @_; + return unless is_admin($logger, $who, $ided); return "Syntax: exit" unless @arguments == 0; exit; -- cgit v1.1