CGI-Application-Plugin-Authentication
view release on metacpan or search on metacpan
lib/CGI/Application/Plugin/Authentication/Display/Basic.pm view on Meta::CPAN
package CGI::Application::Plugin::Authentication::Display::Basic;
$CGI::Application::Plugin::Authentication::Display::Basic::VERSION = '0.25';
use base qw(CGI::Application::Plugin::Authentication::Display);
use 5.006;
use strict;
use warnings;
use Carp;
sub new {
my $class = shift;
my $cgiapp = shift;
my $self = CGI::Application::Plugin::Authentication::Display->new($cgiapp);
bless $self, $class;
return $self;
}
sub login_box {
my $self = shift;
croak "already authenticated" if $self->_cgiapp->authen->is_authenticated;
my $credentials = $self->_cgiapp->authen->credentials;
my $runmode = $self->_cgiapp->get_current_runmode;
my $destination = $self->_cgiapp->authen->_detaint_destination || $self->_cgiapp->authen->_detaint_selfurl;
my $action = $self->_cgiapp->authen->_detaint_url;
my $username = $credentials->[0];
my $password = $credentials->[1];
my $login_form = $self->_cgiapp->authen->_config->{LOGIN_FORM};
my %options = (
TITLE => 'Sign In',
USERNAME_LABEL => 'User Name',
PASSWORD_LABEL => 'Password',
SUBMIT_LABEL => 'Sign In',
COMMENT => 'Please enter your username and password in the fields below.',
REMEMBERUSER_OPTION => 1,
REMEMBERUSER_LABEL => 'Remember User Name',
REMEMBERUSER_COOKIENAME => 'CAPAUTHTOKEN',
REGISTER_URL => '',
REGISTER_LABEL => 'Register Now!',
FORGOTPASSWORD_URL => '',
FORGOTPASSWORD_LABEL => 'Forgot Password?',
INVALIDPASSWORD_MESSAGE => 'Invalid username or password<br />(login attempt %d)',
FORM_SUBMIT_METHOD => 'post',
%$login_form,
);
my $messages = '';
if ( my $attempts = $self->_cgiapp->authen->login_attempts ) {
$messages .= '<li class="warning">' . sprintf($options{INVALIDPASSWORD_MESSAGE}, $attempts) . '</li>';
} else {
$messages .= "<li>$options{COMMENT}</li>";
}
my $tabindex = 3;
my ($rememberuser, $username_value, $register, $forgotpassword) = ('','','','');
if ($options{REMEMBERUSER_OPTION}) {
$rememberuser = <<END;
<label for="authen_rememberuserfield" id="authen_rememberuserfield_label" class="authen_label">$options{REMEMBERUSER_LABEL}
<input id="authen_rememberuserfield" class="authen_input" tabindex="$tabindex" type="checkbox" name="authen_rememberuser" value="1" />
</label>
END
$tabindex++;
$username_value = $self->_cgiapp->authen->_detaint_username($username, $options{REMEMBERUSER_COOKIENAME});
}
my $submit_tabindex = $tabindex++;
if ($options{REGISTER_URL}) {
$register = qq[<a href="$options{REGISTER_URL}" id="authen_registerlink" tabindex="$tabindex">$options{REGISTER_LABEL}</a>];
$tabindex++;
}
if ($options{FORGOTPASSWORD_URL}) {
$forgotpassword = qq[<a href="$options{FORGOTPASSWORD_URL}" id="authen_forgotpasswordlink" tabindex="$tabindex">$options{FORGOTPASSWORD_LABEL}</a>];
$tabindex++;
}
my $html .= <<END;
<form id="loginform" method="$options{FORM_SUBMIT_METHOD}" action="${action}">
<div class="login">
<div class="login_header">
$options{TITLE}
</div>
<div class="login_content">
<ul class="message">
${messages}
</ul>
<fieldset>
<label for="authen_loginfield" id="authen_loginfield_label" class="authen_label">$options{USERNAME_LABEL}
<input id="authen_loginfield" class="authen_input" tabindex="1" type="text" name="${username}" size="20" value="$username_value" />
( run in 0.402 second using v1.01-cache-2.11-cpan-39bf76dae61 )