diff --git a/lib/RevBank/Users.pm b/lib/RevBank/Users.pm index b0d0d09..14469ee 100644 --- a/lib/RevBank/Users.pm +++ b/lib/RevBank/Users.pm @@ -98,13 +98,18 @@ sub is_special($username) { return $username =~ /^[-+*]/; } -sub parse_user($username) { +sub parse_user($username, $allow_invalid = 0) { return undef if is_hidden($username); my $users = _read(); - return exists $users->{ lc $username } - ? $users->{ lc $username }->[0] - : undef; + + exists $users->{ lc $username } + or return undef; + + $allow_invalid or defined balance($username) + or return undef; + + return $users->{ lc $username }->[0]; } sub assert_user($username) { diff --git a/plugins/adduser b/plugins/adduser index b99d2b3..5da25f2 100644 --- a/plugins/adduser +++ b/plugins/adduser @@ -27,6 +27,9 @@ sub username($self, $cart, $name, @) { return REJECT, "That name already exists." if defined parse_user($name); + return REJECT, "That name is not available." + if defined parse_user($name, 1); + for my $plugin (RevBank::Plugins->new) { my $id = $plugin->id;