From 9508574dcb8c37ff1cb8211e2fe845b2703d9141 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Sun, 10 Jun 2012 15:38:56 +0200 Subject: A more modular prompt. --- lib/Fripost/Commands/user_passwd.pm | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'lib/Fripost/Commands/user_passwd.pm') 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() ); -- cgit v1.2.3