| Revision 2 (by moose, 2006/07/10 13:21:14) |
initial import
|
#!/usr/bin/perl
use strict;
use warnings;
use SVNAdmin;
#use CGI::Pretty qw/:all *table *TR *Tr *td *div *span *label *ul *li/;
use CGI qw/:all *table *TR *Tr *td *div *span *label *ul *li/;
our $uname = '';
if($session->key('save_username')) {
$uname = $session->key('saved_username');
}
my $user = $q->param('username');
my $pass = $q->param('password');
my $submit = $q->param('login');
my $error;
our %errors = (
'notcorrect' => 'Username and/or password is incorrect.',
'unotentered' => 'Username was not entered.',
'pnotentered' => 'Password was not entered.',
);
if($session->key('loggedin')) {
my $ref = $session->key('referer') || uri('user.pl');
print http_redirect(-uri => $ref);
exit;
}
if($user) {
$submit=1;
$user = $acl->user($user);
if(!$user || !$user->test_password($pass)) {
if(!$pass) {
$error = $errors{pnotentered};
} else {
$error = $errors{notcorrect};
$pass = 0;
}
}
else {
$session->key('username', $user->name);
$session->key('loggedin', 1);
my $ref = $q->param('referer') || $session->key('referer') || uri('user.pl');
print http_redirect(-uri => $ref);
exit;
}
} else {
if($pass) { $submit=1; }
if($submit) {
$error = $errors{unotentered};
}
}
do_login_ui();
sub do_login_ui {
print
http_header() .
start_page(-style => 'style.css', -title => 'SVN Admin Login') .
start_menu() . end_menu() . start_content();
print
start_div({-class => 'errorbox'}) .
($error ? $error : ' ') .
end_div();
print
start_div({-class => 'ui_box'}) .
start_form(-action => uri('login.pl')) .
start_table({-class => 'loginbox_table'}) .
start_Tr({-class => 'loginbox_row'}) .
th({-class => 'loginbox_header', -colspan => 2}, 'Admin Login') .
end_Tr() .
start_Tr({-class => 'loginbox_row'}) .
start_td({-class => 'loginbox_label'}) . label({-for => 'username', -class => (($submit && !$user)?'login_label_error':'login_label') }, 'User Name') . end_td() .
start_td({-class => 'loginbox_cell'}) . textfield({-id => 'username', -name => 'username', -value => $uname}) . end_td() .
end_Tr() .
start_Tr({-class => 'loginbox_form_row'}) .
start_td({-class => 'loginbox_label'}) . label({-for => 'password', -class => (($submit && !$pass)?'login_label_error':'login_label') }, 'Password') . end_td() .
start_td({-class => 'loginbox_cell'}) . password_field({-id => 'password', -name => 'password'}) . end_td() .
end_Tr() .
start_Tr({-class => 'loginbox_form_row'}) .
start_td({-class => 'loginbox_submit', -colspan => 2}) . submit({-name => 'login', -value=>'Log In'}) . end_td() .
end_Tr() .
start_Tr({-style => 'display: none;'}) .
start_td() . hidden(-name => 'referer', -value => $ENV{HTTP_REFERER}) . end_td() .
end_Tr() .
end_form() .
end_table() .
end_div();
print end_content() . end_page();
}