X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/0f25ec8eb640a850a8f1efe7081c03d05d04eda4..85832d165663464f9de5c3ff4618a576cb1b5593:/IkiWiki/CGI.pm diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index f07a4e5a2..b42489210 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -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, @@ -439,7 +444,15 @@ sub cgi_editpage ($$) { #{{{ } if ($form->submitted eq "Cancel") { - redirect($q, "$config{url}/".htmlpage($page)); + if ($newfile && defined $from) { + redirect($q, "$config{url}/".htmlpage($from)); + } + elsif ($newfile) { + redirect($q, $config{url}); + } + else { + redirect($q, "$config{url}/".htmlpage($page)); + } return; } elsif ($form->submitted eq "Preview") { @@ -635,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); @@ -646,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);