From: Michael Andreen Date: Sat, 16 May 2009 14:08:30 +0000 (+0200) Subject: Converted the .-user command X-Git-Url: https://ruin.nu/git/?a=commitdiff_plain;h=563c755ed5d0f3d5e86e2e3f347f55155143dbad;p=NDIRC.git Converted the .-user command --- diff --git a/Commands/Usermgm.pm b/Commands/Usermgm.pm index d7d86b0..5ec8a27 100644 --- a/Commands/Usermgm.pm +++ b/Commands/Usermgm.pm @@ -53,4 +53,37 @@ INSERT INTO users (username,hostmask,pnick,password) VALUES(?,?,?,'') } } +sub deactivateuser + : Help(syntax: .-user nick | nick must be alphanum characters, if no pnick is given then it will be set to nick) + : Alias(-user) + : ACL(irc_deactivateuser) +{ + my ($self,$c,$msg) = @_; + + my ($nick) = $msg =~ /^(\S+)$/ or die 'ARGS'; + + my $dbh = $c->model; + my $f = $dbh->prepare(q{SELECT uid,username FROM users WHERE username ILIKE ?}); + $f->execute($nick); + my ($uid,$username) = $f->fetchrow(); + + if ($f->rows == 1){ + my $updated = $dbh->do(q{ +UPDATE users SET hostmask = ?, password = '' WHERE uid = ? + },undef,$username,$uid); + if ($updated > 0){ + my $groups = $dbh->do(q{DELETE FROM groupmembers WHERE uid = ?},undef,$uid); + $groups += 0; + $c->reply("$username has been deactivated. Removed from $groups groups."); + }else{ + $c->reply("Something went wrong when trying to modify $username"); + } + }elsif ($f->rows == 0){ + $c->reply("No hit, maybe spelling mistake, or add % as wildcard"); + }else{ + $c->reply("More than 1 user matched, please refine the search"); + } + $f->finish; +} + 1; diff --git a/Usermgm.pm b/Usermgm.pm index d3083f4..e82bcd4 100644 --- a/Usermgm.pm +++ b/Usermgm.pm @@ -25,7 +25,7 @@ require Exporter; our @ISA = qw/Exporter/; -our @EXPORT = qw/whois flags flag laston addPoints chattrG setHost setPNick deactivateUser getShips getFleet/; +our @EXPORT = qw/whois flags flag laston addPoints chattrG setHost setPNick getShips getFleet/; sub whois { my ($msg, $command) = @_; @@ -392,35 +392,4 @@ sub setPNick { } } -sub deactivateUser { - my ($msg, $command) = @_; - - my $nick; - if(defined $msg && $msg =~ /^(\S+)$/){ - $nick = $1; - }else{ - $ND::server->command("notice $ND::nick syntax: .$command user"); - return; - } - if (hc()){ - my $f = $ND::DBH->prepare("SELECT uid,username FROM users WHERE username ILIKE ?"); - $f->execute($nick); - my ($uid,$username) = $f->fetchrow(); - if ($f->rows == 1){ - my $updated = $ND::DBH->do("UPDATE users SET hostmask = ?, password = '' WHERE uid = ?",undef,$username,$uid); - if ($updated > 0){ - my $groups = $ND::DBH->do("DELETE FROM groupmembers WHERE uid = ?",undef,$uid); - $ND::server->command("msg $ND::target $ND::B$username$ND::B has been deactivated."); - }else{ - $ND::server->command("msg $ND::target Something went wrong when trying to modify $ND::B$username$ND::B"); - } - }elsif ($f->rows == 0){ - $ND::server->command("msg $ND::target No hit, maybe spelling mistake, or add % as wildcard"); - }else{ - $ND::server->command("msg $ND::target More than 1 user matched, please refine the search"); - } - $f->finish; - } -} - 1; diff --git a/database/roles.sql b/database/roles.sql index 6840ee5..b91fa58 100644 --- a/database/roles.sql +++ b/database/roles.sql @@ -10,6 +10,7 @@ INSERT INTO roles VALUES('irc_delquote'); INSERT INTO roles VALUES('irc_points_others'); INSERT INTO roles VALUES('irc_sms'); INSERT INTO roles VALUES('irc_adduser'); +INSERT INTO roles VALUES('irc_deactivateuser'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_nick'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_intel'); @@ -21,6 +22,7 @@ INSERT INTO group_roles (gid,role) VALUES(1,'irc_delquote'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_points_others'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_sms'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_adduser'); +INSERT INTO group_roles (gid,role) VALUES(1,'irc_deactivateuser'); INSERT INTO group_roles (gid,role) VALUES(2,'irc_gs'); INSERT INTO group_roles (gid,role) VALUES(2,'irc_scan'); @@ -34,6 +36,7 @@ INSERT INTO group_roles (gid,role) VALUES(3,'irc_delquote'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_points_others'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_sms'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_adduser'); +INSERT INTO group_roles (gid,role) VALUES(3,'irc_deactivateuser'); INSERT INTO group_roles (gid,role) VALUES(4,'irc_points_others');