X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/801dc76bf0e066558cc6ea179073104fb6a67c92..e56ec7a96c3a2064941a82619bf6cb0d2e8392e0:/IkiWiki/Plugin/openid.pm

diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm
index 574c42f0e..bb99446b4 100644
--- a/IkiWiki/Plugin/openid.pm
+++ b/IkiWiki/Plugin/openid.pm
@@ -4,7 +4,7 @@ package IkiWiki::Plugin::openid;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
 sub import {
 	hook(type => "getopt", id => "openid", call => \&getopt);
@@ -26,6 +26,7 @@ sub getsetup () {
 		plugin => {
 			safe => 1,
 			rebuild => 0,
+			section => "auth",
 		},
 		openidsignup => {
 			type => "string",
@@ -56,7 +57,7 @@ sub formbuilder_setup (@) {
 		# OpenID fieldset.
 		$form->fieldsets("OpenID");
 
- 		$form->field(
+		$form->field(
 			name => "openid_url",
 			label => gettext("Log in with")." ".htmllink("", "", "ikiwiki/OpenID", noimageinline => 1),
 			fieldset => "OpenID",
@@ -82,13 +83,13 @@ sub formbuilder_setup (@) {
 			}
 		}
 	}
-	elsif ($form->title eq "preferences") {
-		if (! defined $form->field(name => "name")) {
-			$form->field(name => "OpenID", disabled => 1,
-				value => $session->param("name"), 
-				size => 50, force => 1,
-				fieldset => "login");
-		}
+	elsif ($form->title eq "preferences" &&
+	       IkiWiki::openiduser($session->param("name"))) {
+		$form->field(name => "openid_url", disabled => 1,
+			label => htmllink("", "", "ikiwiki/OpenID", noimageinline => 1),
+			value => $session->param("name"), 
+			size => 50, force => 1,
+			fieldset => "login");
 	}
 }
 
@@ -180,33 +181,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 $oid=Net::OpenID::VerifiedIdentity->new(identity => $user);
-		my $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