aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Fripost/Commands/user_passwd.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Fripost/Commands/user_passwd.pm')
-rw-r--r--lib/Fripost/Commands/user_passwd.pm30
1 files changed, 12 insertions, 18 deletions
diff --git a/lib/Fripost/Commands/user_passwd.pm b/lib/Fripost/Commands/user_passwd.pm
index 805b7e1..64f35d9 100644
--- a/lib/Fripost/Commands/user_passwd.pm
+++ b/lib/Fripost/Commands/user_passwd.pm
@@ -25,24 +25,18 @@ sub main {
my $ldap = shift;
my $conf = shift;
- my $username;
- if (defined $_[0]) {
- $username = fix_username ($_[0]);
- Email::Valid->address($username)
- or die "Error: `" .$username. "' is not a valid e-mail.\n";
- }
- else {
- $username = prompt_email("Username: ", 'is_user');
- }
-
-
- # Ensure that the user exists.
- my $domain = (split /\@/, $username, 2)[1];
- die "Error: Unknown domain `" .$domain. "'.\n"
- unless $ldap->domain->search({ domain => $domain })->count;
- die "Error: Unknown user `" .$username. "'.\n"
- unless $ldap->user->search({ username => $username })->count;
-
+ my $username = shift;
+ prompt_if_undefined ( "Username: ", \$username,
+ [ rewrite => sub { fix_username $_ }
+ , 'Invalid e-mail' => sub { Email::Valid->address($_) }
+ , 'Unknown domain' => sub { $ldap->domain->search({
+ domain => (split /\@/, $_, 2)[1]
+ })->count }
+ , 'Unknown user' => sub { $ldap->user->search({
+ username => $_
+ })->count }
+ ]
+ );
my $password = $conf->{password};
$password //= hash( prompt_password() );