sub import {
add_underlay("openid-selector");
+ add_underlay("jquery");
hook(type => "checkconfig", id => "openid", call => \&checkconfig);
hook(type => "getsetup", id => "openid", call => \&getsetup);
hook(type => "auth", id => "openid", call => \&auth);
IkiWiki::openiduser($session->param("name"))) {
$form->field(name => "openid_identifier", disabled => 1,
label => htmllink("", "", "ikiwiki/OpenID", noimageinline => 1),
- value => $session->param("name"),
- size => length($session->param("name")), force => 1,
- fieldset => "login");
+ value => "",
+ size => 1, force => 1,
+ fieldset => "login",
+ comment => $session->param("name"));
$form->field(name => "email", type => "hidden");
}
}
$trust_root=$cgiurl if ! defined $trust_root;
my $check_url = $claimed_identity->check_url(
- return_to => "$cgiurl?do=postsignin",
- trust_root => $trust_root,
+ return_to => auto_upgrade_https($q, "$cgiurl?do=postsignin"),
+ trust_root => auto_upgrade_https($q, $trust_root),
delayed_return => 1,
);
# Redirect the user to the OpenID server, which will
my $q=shift;
my $session=shift;
+ eval q{use Net::INET6Glue::INET_is_INET6}; # may not be available
eval q{use Net::OpenID::Consumer};
error($@) if $@;
$ua=LWPx::ParanoidAgent->new;
}
else {
- $ua=LWP::UserAgent->new;
+ $ua=useragent();
}
# Store the secret in the session.
ua => $ua,
args => $q,
consumer_secret => sub { return shift()+$secret },
- required_root => $cgiurl,
+ required_root => auto_upgrade_https($q, $cgiurl),
);
}
+sub auto_upgrade_https {
+ my $q=shift;
+ my $url=shift;
+ if ($q->https()) {
+ $url=~s/^http:/https:/i;
+ }
+ return $url;
+}
+
sub load_openid_module {
# Give up if module is unavailable to avoid needing to depend on it.
eval q{use Net::OpenID::Consumer};