aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-10-02 22:56:09 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-10-02 22:56:09 +0000
commit67b513e8c46b0be038133122a37e7fae385f69fc (patch)
tree1521ee74dca5821758684f9bd3c03efe6f628f32
parentfb3a160f2dccd4aba867124342c9261df76b326c (diff)
downloadikiwiki-67b513e8c46b0be038133122a37e7fae385f69fc.tar
ikiwiki-67b513e8c46b0be038133122a37e7fae385f69fc.tar.gz
* Patch from Alec Berryman adding a http_auth config item that allows
using HTTP Authentication instead of ikiwiki's built in authentication. Useful for eg, large sites with their own previously existing user auth setup. Closes: #384534
-rw-r--r--IkiWiki.pm1
-rw-r--r--IkiWiki/CGI.pm22
-rw-r--r--IkiWiki/Wrapper.pm2
-rw-r--r--debian/changelog6
-rw-r--r--doc/ikiwiki.setup2
-rwxr-xr-xikiwiki.pl1
6 files changed, 32 insertions, 2 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 1a00f2dbd..5c62c7f9b 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -62,6 +62,7 @@ sub defaultconfig () { #{{{
timeformat => '%c',
locale => undef,
sslcookie => 0,
+ httpauth => 0,
} #}}}
sub checkconfig () { #{{{
diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm
index f550b673a..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,
@@ -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);
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
index 4a98af622..a3ecccd5b 100644
--- a/IkiWiki/Wrapper.pm
+++ b/IkiWiki/Wrapper.pm
@@ -28,7 +28,7 @@ sub gen_wrapper () { #{{{
my @envsave;
push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
- HTTP_COOKIE} if $config{cgi};
+ HTTP_COOKIE REMOTE_USER} if $config{cgi};
my $envsave="";
foreach my $var (@envsave) {
$envsave.=<<"EOF"
diff --git a/debian/changelog b/debian/changelog
index a6c7821f5..b037b517a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,12 @@
ikiwiki (1.29) UNRELEASED; urgency=low
* Patch from Paul Tötterman to use CP in the Makefile.
+ * Patch from Alec Berryman adding a http_auth config item that allows
+ using HTTP Authentication instead of ikiwiki's built in authentication.
+ Useful for eg, large sites with their own previously existing user auth
+ setup. Closes: #384534
- -- Joey Hess <joeyh@debian.org> Thu, 28 Sep 2006 19:10:58 -0400
+ -- Joey Hess <joeyh@debian.org> Mon, 2 Oct 2006 18:50:29 -0400
ikiwiki (1.28) unstable; urgency=low
diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup
index a9d9414c0..18c413e6f 100644
--- a/doc/ikiwiki.setup
+++ b/doc/ikiwiki.setup
@@ -86,6 +86,8 @@ use IkiWiki::Setup::Standard {
#locale => 'en_US.UTF-8',
# Only send cookies over SSL connections.
#sslcookie => 1,
+ # Use HTTP Authentication instead of Ikiwiki's.
+ #httpauth => 1,
# Logging settings:
verbose => 0,
syslog => 0,
diff --git a/ikiwiki.pl b/ikiwiki.pl
index b4cf0e64a..b9a0db7e4 100755
--- a/ikiwiki.pl
+++ b/ikiwiki.pl
@@ -47,6 +47,7 @@ sub getconfig () { #{{{
"adminemail=s" => \$config{adminemail},
"timeformat=s" => \$config{timeformat},
"sslcookie!" => \$config{sslcookie},
+ "httpauth!" => \$config{httpauth},
"exclude=s@" => sub {
$config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/;
},