/usr/local/CPAN/Net-IMAP-Server/Net/IMAP/Server/Command/Login.pm
package Net::IMAP::Server::Command::Login;
use warnings;
use strict;
use base qw/Net::IMAP::Server::Command/;
sub validate {
my $self = shift;
return $self->bad_command("Already logged in")
unless $self->connection->is_unauth;
my @options = $self->parsed_options;
return $self->bad_command("Not enough options") if @options < 2;
return $self->bad_command("Too many options") if @options > 2;
return $self->no_command("Login is disabled")
if $self->connection->capability =~ /\bLOGINDISABLED\b/;
return 1;
}
sub run {
my $self = shift;
$self->server->auth_class->require || $self->log( 1, $@ );
my $auth = $self->server->auth_class->new;
if ( $auth->provides_plain
and $auth->auth_plain( $self->parsed_options ) )
{
$self->connection->auth($auth);
$self->ok_completed();
} else {
$self->bad_command("Invalid login");
}
}
1;