* Improve login/register process, the login dialog has only name and

password fields, which allows more web browsers to regognise it as a login
  field, and is less confusing.
master
joey 2006-10-30 23:28:01 +00:00
parent 285b9d8b99
commit c3a530ab93
2 changed files with 28 additions and 12 deletions

View File

@ -116,7 +116,7 @@ sub cgi_signin ($$) { #{{{
eval q{use CGI::FormBuilder}; eval q{use CGI::FormBuilder};
my $form = CGI::FormBuilder->new( my $form = CGI::FormBuilder->new(
title => "signin", title => "signin",
fields => [qw(do title page subpage from name password confirm_password email)], fields => [qw(do title page subpage from name password)],
header => 1, header => 1,
charset => "utf-8", charset => "utf-8",
method => 'POST', method => 'POST',
@ -145,8 +145,14 @@ sub cgi_signin ($$) { #{{{
$form->field(name => "from", type => "hidden"); $form->field(name => "from", type => "hidden");
$form->field(name => "subpage", type => "hidden"); $form->field(name => "subpage", type => "hidden");
$form->field(name => "password", type => "password", required => 0); $form->field(name => "password", type => "password", required => 0);
$form->field(name => "confirm_password", type => "password", required => 0); if ($form->submitted eq "Register" || $form->submitted eq "Create Account") {
$form->field(name => "email", required => 0); $form->title("register");
$form->text("");
$form->field(name => "name", comment => "use FirstnameLastName");
$form->fields(qw(do title page subpage from name password confirm_password email));
$form->field(name => "confirm_password", type => "password");
$form->field(name => "email", type => "text");
}
if ($q->param("do") ne "signin" && !$form->submitted) { if ($q->param("do") ne "signin" && !$form->submitted) {
$form->text("You need to log in first."); $form->text("You need to log in first.");
} }
@ -155,7 +161,8 @@ sub cgi_signin ($$) { #{{{
# Set required fields based on how form was submitted. # Set required fields based on how form was submitted.
my %required=( my %required=(
"Login" => [qw(name password)], "Login" => [qw(name password)],
"Register" => [qw(name password confirm_password email)], "Register" => [],
"Create Account" => [qw(name password confirm_password email)],
"Mail Password" => [qw(name)], "Mail Password" => [qw(name)],
); );
foreach my $opt (@{$required{$form->submitted}}) { foreach my $opt (@{$required{$form->submitted}}) {
@ -179,7 +186,7 @@ sub cgi_signin ($$) { #{{{
} }
# And make sure the entered name exists when logging # And make sure the entered name exists when logging
# in or sending email, and does not when registering. # in or sending email, and does not when registering.
if ($form->submitted eq 'Register') { if ($form->submitted eq 'Create Account') {
$form->field( $form->field(
name => "name", name => "name",
validate => sub { validate => sub {
@ -204,8 +211,6 @@ sub cgi_signin ($$) { #{{{
else { else {
# First time settings. # First time settings.
$form->field(name => "name", comment => "use FirstnameLastName"); $form->field(name => "name", comment => "use FirstnameLastName");
$form->field(name => "confirm_password", comment => "(only needed");
$form->field(name => "email", comment => "for registration)");
if ($session->param("name")) { if ($session->param("name")) {
$form->field(name => "name", value => $session->param("name")); $form->field(name => "name", value => $session->param("name"));
} }
@ -228,7 +233,7 @@ sub cgi_signin ($$) { #{{{
redirect($q, $config{url}); redirect($q, $config{url});
} }
} }
elsif ($form->submitted eq 'Register') { elsif ($form->submitted eq 'Create Account') {
my $user_name=$form->field('name'); my $user_name=$form->field('name');
if (userinfo_setall($user_name, { if (userinfo_setall($user_name, {
'email' => $form->field('email'), 'email' => $form->field('email'),
@ -237,12 +242,12 @@ sub cgi_signin ($$) { #{{{
})) { })) {
$form->field(name => "confirm_password", type => "hidden"); $form->field(name => "confirm_password", type => "hidden");
$form->field(name => "email", type => "hidden"); $form->field(name => "email", type => "hidden");
$form->text("Registration successful. Now you can Login."); $form->text("Account creation successful. Now you can Login.");
printheader($session); printheader($session);
print misctemplate($form->title, $form->render(submit => ["Login"])); print misctemplate($form->title, $form->render(submit => ["Login"]));
} }
else { else {
error("Error saving registration."); error("Error creating account.");
} }
} }
elsif ($form->submitted eq 'Mail Password') { elsif ($form->submitted eq 'Mail Password') {
@ -267,8 +272,16 @@ sub cgi_signin ($$) { #{{{
$form->text("Your password has been emailed to you."); $form->text("Your password has been emailed to you.");
$form->field(name => "name", required => 0); $form->field(name => "name", required => 0);
printheader($session); printheader($session);
print misctemplate($form->title, $form->render(submit => ["Login", "Register", "Mail Password"])); print misctemplate($form->title, $form->render(submit => ["Login", "Mail Password"]));
} }
elsif ($form->submitted eq "Register") {
printheader($session);
print misctemplate($form->title, $form->render(submit => ["Create Account"]));
}
}
elsif ($form->submitted eq "Create Account") {
printheader($session);
print misctemplate($form->title, $form->render(submit => ["Create Account"]));
} }
else { else {
printheader($session); printheader($session);

5
debian/changelog vendored
View File

@ -20,8 +20,11 @@ ikiwiki (1.32) UNRELEASED; urgency=low
them together. them together.
* Install the source of the examples into /usr/share/doc/ikiwiki/examples. * Install the source of the examples into /usr/share/doc/ikiwiki/examples.
* Add perlmagick to build-depends so syntax check of img plugin works. * Add perlmagick to build-depends so syntax check of img plugin works.
* Improve login/register process, the login dialog has only name and
password fields, which allows more web browsers to regognise it as a login
field, and is less confusing.
-- Joey Hess <joeyh@debian.org> Mon, 30 Oct 2006 14:30:54 -0500 -- Joey Hess <joeyh@debian.org> Mon, 30 Oct 2006 18:26:55 -0500
ikiwiki (1.31) unstable; urgency=low ikiwiki (1.31) unstable; urgency=low