openid: in &openiduser, let domain-style providers have arbitrarily many subdomains
authorSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>
Sun, 21 Dec 2008 16:32:44 +0000 (16:32 +0000)
committerSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>
Sun, 21 Dec 2008 16:36:10 +0000 (16:36 +0000)
This leads to better display for OpenIDs like smcv.pseudorandom.co.uk
and thm.id.fedoraproject.org (to take a couple of examples from the
IkiWiki commit history).

IkiWiki/Plugin/openid.pm

index 2933c9ed99960dd8e5edece394f11a6b9b08f085..4acfecf5efe44a9d82b2042de03b51b06263f9ad 100644 (file)
@@ -191,9 +191,10 @@ sub openiduser ($) {
            eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) {
                my $oid=Net::OpenID::VerifiedIdentity->new(identity => $user);
                my $display=$oid->display;
-               # Convert "user.somehost.com" to "user [somehost.com]".
+               # Convert "user.somehost.com" to "user [somehost.com]"
+               # (also "user.somehost.co.uk")
                if ($display !~ /\[/) {
-                       $display=~s/^(.*?)\.([^.]+\.[a-z]+)$/$1 [$2]/;
+                       $display=~s/^([-a-zA-Z0-9]+?)\.([-.a-zA-Z0-9]+\.[a-z]+)$/$1 [$2]/;
                }
                # Convert "http://somehost.com/user" to "user [somehost.com]".
                if ($display !~ /\[/) {