]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/CGI.pm
* Atom feed support based on a patch by Clint Adams.
[ikiwiki.git] / IkiWiki / CGI.pm
index f550b673a7acceaee1f35195565487b6857cab81..53eda2158ad0958c97c3fad511ef9b1a60380a23 100644 (file)
@@ -314,6 +314,11 @@ sub cgi_prefs ($$) { #{{{
        if (! is_admin($user_name)) {
                $form->field(name => "locked_pages", type => "hidden");
        }
+
+       if ($config{httpauth}) {
+               $form->field(name => "password", type => "hidden");
+               $form->field(name => "confirm_password", type => "hidden");
+       }
        
        if (! $form->submitted) {
                $form->field(name => "email", force => 1,
@@ -457,7 +462,7 @@ sub cgi_editpage ($$) { #{{{
                                value => $content, force => 1);
                $form->field(name => "comments",
                                value => $comments, force => 1);
-               $config{rss}=0; # avoid preview writing an rss feed!
+               $config{rss}=$config{atom}=0; # avoid preview writing a feed!
                $form->tmpl_param("page_preview",
                        htmlize($page, $type,
                        linkify($page, "",
@@ -643,6 +648,7 @@ sub cgi () { #{{{
        
        # Everything below this point needs the user to be signed in.
        if (((! $config{anonok} || $do eq 'prefs') &&
+            (! $config{httpauth}) &&
             (! defined $session->param("name") ||
             ! userinfo_get($session->param("name"), "regdate"))) || $do eq 'signin') {
                cgi_signin($q, $session);
@@ -654,6 +660,22 @@ sub cgi () { #{{{
                
                return;
        }
+
+       if ($config{httpauth} && (! defined $session->param("name"))) {
+               if (! defined $q->remote_user()) {
+                       error("Could not determine authenticated username.");
+               }
+               else {
+                       $session->param("name", $q->remote_user());
+                       if (!userinfo_get($session->param("name"),"regdate")) {
+                               userinfo_setall($session->param("name"), {
+                                       email => "",
+                                       password => "",
+                                       regdate=>time,
+                               });
+                       }
+               }
+       }
        
        if ($do eq 'create' || $do eq 'edit') {
                cgi_editpage($q, $session);