sub import {
add_underlay("openid-selector");
hook(type => "checkconfig", id => "openid", call => \&checkconfig);
- hook(type => "getopt", id => "openid", call => \&getopt);
hook(type => "getsetup", id => "openid", call => \&getsetup);
hook(type => "auth", id => "openid", call => \&auth);
hook(type => "formbuilder_setup", id => "openid",
#
# When other auth hooks are registered, give the selector
# a reference to the normal signin form.
+ require IkiWiki::CGI;
my $real_cgi_signin;
if (keys %{$IkiWiki::hooks{auth}} > 1) {
- require IkiWiki::CGI;
$real_cgi_signin=\&IkiWiki::cgi_signin;
}
inject(name => "IkiWiki::cgi_signin", call => sub ($$) {
}
}
-sub getopt () {
- eval q{use Getopt::Long};
- error($@) if $@;
- Getopt::Long::Configure('pass_through');
- GetOptions("openidsignup=s" => \$config{openidsignup});
-}
-
sub getsetup () {
return
plugin => {
rebuild => 0,
section => "auth",
},
- openidsignup => {
- type => "string",
- example => "http://myopenid.com/",
- description => "an url where users can signup for an OpenID",
- safe => 1,
- rebuild => 0,
- },
}
sub openid_selector {
if (! load_openid_module()) {
if ($real_cgi_signin) {
$real_cgi_signin->($q, $session);
+ exit;
}
error(sprintf(gettext("failed to load openid module: "), @_));
}
$openid_error=shift;
});
}
- elsif ($q->param("do") eq "signin" && $real_cgi_signin) {
- $real_cgi_signin->($q, $session);
- exit;
- }
my $template=IkiWiki::template("openid-selector.tmpl");
$template->param(
cgiurl => $config{cgiurl},
(defined $openid_error ? (openid_error => $openid_error) : ()),
(defined $openid_url ? (openid_url => $openid_url) : ()),
- ($real_cgi_signin ? (nonopenidurl => IkiWiki::cgiurl(do => "signin")) : ()),
+ ($real_cgi_signin ? (nonopenidform => $real_cgi_signin->($q, $session, 1)) : ()),
);
IkiWiki::printheader($session);
$form->field(name => "openid_identifier", disabled => 1,
label => htmllink("", "", "ikiwiki/OpenID", noimageinline => 1),
value => $session->param("name"),
- size => 50, force => 1,
+ size => length($session->param("name")), force => 1,
fieldset => "login");
$form->field(name => "email", type => "hidden");
}