X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/e43cd269d2b492da6fc4bfdc3d6930e88f1dfa0c..9efabee3f4d4ade0f1de438cbe98bc4ceee9d864:/IkiWiki/Plugin/httpauth.pm diff --git a/IkiWiki/Plugin/httpauth.pm b/IkiWiki/Plugin/httpauth.pm index 786bcba3b..c2e55b015 100644 --- a/IkiWiki/Plugin/httpauth.pm +++ b/IkiWiki/Plugin/httpauth.pm @@ -4,19 +4,36 @@ package IkiWiki::Plugin::httpauth; use warnings; use strict; -use IkiWiki; +use IkiWiki 3.00; +use Data::Dumper; -sub import { #{{{ +sub import { + hook(type => "getsetup", id => "httpauth", call => \&getsetup); hook(type => "auth", id => "httpauth", call => \&auth); -} # }}} +} -sub auth ($$) { #{{{ +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 0, + }, +} + +sub auth ($$) { my $cgi=shift; my $session=shift; if (defined $cgi->remote_user()) { - $session->param("name", $cgi->remote_user()); + my $user = $cgi->remote_user(); + $session->param("name", $user); + eval IkiWiki::possibly_foolish_untaint($ENV{SSL_CLIENT_S_DN_CN}); + my $realname = IkiWiki::userinfo_get($user, "realname"); + if ((!defined $realname || $realname eq "") && + defined $ENV{SSL_CLIENT_S_DN_CN}) { + IkiWiki::userinfo_set($user, "realname", $ENV{SSL_CLIENT_S_DN_CN}); + } } -} #}}} +} 1