diff options
author | Simon McVittie <smcv@ http://smcv.pseudorandom.co.uk/> | 2009-07-10 18:41:16 +0100 |
---|---|---|
committer | Simon McVittie <smcv@ http://smcv.pseudorandom.co.uk/> | 2009-07-10 18:41:16 +0100 |
commit | e12b7f5e54730325c751a889ed2e08580b5ef6ba (patch) | |
tree | d16415379591f3edc83361e0fc60bea373748b2a | |
parent | 0c6a47e9e4c6a5508868b730bed0ac2d0c358ae4 (diff) |
Move OpenID pretty-printing from openid plugin to core
On various sites I have two IkiWiki instances running from the same
repository: one accessible via http and only accepting openid logins,
and one accessible via authenticated https and only accepting httpauth.
The https version should still pretty-print OpenIDs seen in git history,
even though it does not itself accept OpenID logins.
-rw-r--r-- | IkiWiki.pm | 35 | ||||
-rw-r--r-- | IkiWiki/Plugin/openid.pm | 39 |
2 files changed, 35 insertions, 39 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index a0a61ac64..0cb3bf143 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1063,6 +1063,41 @@ sub htmllink ($$$;@) { return "<a href=\"$bestlink\"@attrs>$linktext</a>"; } +sub openiduser ($) { + my $user=shift; + + if ($user =~ m!^https?://! && + eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { + my $display; + + if (Net::OpenID::VerifiedIdentity->can("DisplayOfURL")) { + # this works in at least 2.x + $display = Net::OpenID::VerifiedIdentity::DisplayOfURL($user); + } + else { + # this only works in 1.x + my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); + $display=$oid->display; + } + + # Convert "user.somehost.com" to "user [somehost.com]" + # (also "user.somehost.co.uk") + if ($display !~ /\[/) { + $display=~s/^([-a-zA-Z0-9]+?)\.([-.a-zA-Z0-9]+\.[a-z]+)$/$1 [$2]/; + } + # Convert "http://somehost.com/user" to "user [somehost.com]". + # (also "https://somehost.com/user/") + if ($display !~ /\[/) { + $display=~s/^https?:\/\/(.+)\/([^\/]+)\/?$/$2 [$1]/; + } + $display=~s!^https?://!!; # make sure this is removed + eval q{use CGI 'escapeHTML'}; + error($@) if $@; + return escapeHTML($display); + } + return; +} + sub userlink ($) { my $user=shift; diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 87569915b..dc0e0f48e 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -180,43 +180,4 @@ sub getobj ($$) { ); } -package IkiWiki; - -# This is not used by this plugin, but this seems the best place to put it. -# Used elsewhere to pretty-display the name of an openid user. -sub openiduser ($) { - my $user=shift; - - if ($user =~ m!^https?://! && - eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { - my $display; - - if (Net::OpenID::VerifiedIdentity->can("DisplayOfURL")) { - # this works in at least 2.x - $display = Net::OpenID::VerifiedIdentity::DisplayOfURL($user); - } - else { - # this only works in 1.x - my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user); - $display=$oid->display; - } - - # Convert "user.somehost.com" to "user [somehost.com]" - # (also "user.somehost.co.uk") - if ($display !~ /\[/) { - $display=~s/^([-a-zA-Z0-9]+?)\.([-.a-zA-Z0-9]+\.[a-z]+)$/$1 [$2]/; - } - # Convert "http://somehost.com/user" to "user [somehost.com]". - # (also "https://somehost.com/user/") - if ($display !~ /\[/) { - $display=~s/^https?:\/\/(.+)\/([^\/]+)\/?$/$2 [$1]/; - } - $display=~s!^https?://!!; # make sure this is removed - eval q{use CGI 'escapeHTML'}; - error($@) if $@; - return escapeHTML($display); - } - return; -} - 1 |