]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/passwordauth.pm
Allow jumping directly into account registration process by going to ikiwiki.cgi...
[git.ikiwiki.info.git] / IkiWiki / Plugin / passwordauth.pm
index 90e2ca56493767f655984973dddb80af58fd1285..1898030b58e9fca83496b6ca2c865ac0cdac62ac 100644 (file)
@@ -8,9 +8,10 @@ use IkiWiki 3.00;
 
 sub import {
        hook(type => "getsetup", id => "passwordauth", "call" => \&getsetup);
 
 sub import {
        hook(type => "getsetup", id => "passwordauth", "call" => \&getsetup);
-        hook(type => "formbuilder_setup", id => "passwordauth", call => \&formbuilder_setup);
-        hook(type => "formbuilder", id => "passwordauth", call => \&formbuilder);
+       hook(type => "formbuilder_setup", id => "passwordauth", call => \&formbuilder_setup);
+       hook(type => "formbuilder", id => "passwordauth", call => \&formbuilder);
        hook(type => "sessioncgi", id => "passwordauth", call => \&sessioncgi);
        hook(type => "sessioncgi", id => "passwordauth", call => \&sessioncgi);
+       hook(type => "auth", id => "passwordauth", call => \&auth);
 }
 
 sub getsetup () {
 }
 
 sub getsetup () {
@@ -103,11 +104,11 @@ sub formbuilder_setup (@) {
        my $session=$params{session};
        my $cgi=$params{cgi};
 
        my $session=$params{session};
        my $cgi=$params{cgi};
 
-       if ($form->title eq "signin" || $form->title eq "register") {
+       if ($form->title eq "signin" || $form->title eq "register" || $cgi->param("do") eq "register") {
                $form->field(name => "name", required => 0);
                $form->field(name => "password", type => "password", required => 0);
                
                $form->field(name => "name", required => 0);
                $form->field(name => "password", type => "password", required => 0);
                
-               if ($form->submitted eq "Register" || $form->submitted eq "Create Account") {
+               if ($form->submitted eq "Register" || $form->submitted eq "Create Account" || $cgi->param("do") eq "register") {
                        $form->field(name => "confirm_password", type => "password");
                        $form->field(name => "account_creation_password", type => "password")
                                 if (defined $config{account_creation_password} &&
                        $form->field(name => "confirm_password", type => "password");
                        $form->field(name => "account_creation_password", type => "password")
                                 if (defined $config{account_creation_password} &&
@@ -231,7 +232,7 @@ sub formbuilder (@) {
        my $buttons=$params{buttons};
 
        if ($form->title eq "signin" || $form->title eq "register") {
        my $buttons=$params{buttons};
 
        if ($form->title eq "signin" || $form->title eq "register") {
-               if ($form->submitted && $form->validate) {
+               if (($form->submitted && $form->validate) || $cgi->param("do") eq "register") {
                        if ($form->submitted eq 'Login') {
                                $session->param("name", $form->field("name"));
                                IkiWiki::cgi_postsignin($cgi, $session);
                        if ($form->submitted eq 'Login') {
                                $session->param("name", $form->field("name"));
                                IkiWiki::cgi_postsignin($cgi, $session);
@@ -294,7 +295,7 @@ sub formbuilder (@) {
                                $form->field(name => "name", required => 0);
                                push @$buttons, "Reset Password";
                        }
                                $form->field(name => "name", required => 0);
                                push @$buttons, "Reset Password";
                        }
-                       elsif ($form->submitted eq "Register") {
+                       elsif ($form->submitted eq "Register" || $cgi->param("do") eq "register") {
                                @$buttons="Create Account";
                        }
                }
                                @$buttons="Create Account";
                        }
                }
@@ -335,6 +336,20 @@ sub sessioncgi ($$) {
                IkiWiki::cgi_prefs($q, $session);
                exit;
        }
                IkiWiki::cgi_prefs($q, $session);
                exit;
        }
+       elsif ($q->param("do") eq "register") {
+               # After registration, need to go somewhere, so show prefs page.
+               $session->param(postsignin => "do=prefs");
+               # Due to do=register, this will run in registration-only
+               # mode.
+               IkiWiki::cgi_signin($q, $session);
+               exit;
+       }
+}
+
+sub auth ($$) {
+       # While this hook is not currently used, it needs to exist
+       # so ikiwiki knows that the wiki supports logins, and will
+       # enable the Preferences page.
 }
 
 1
 }
 
 1