diff options
author | Joey Hess <joey@kitenet.net> | 2010-06-23 19:36:23 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-06-23 19:36:23 -0400 |
commit | b38b9327a8f11b642e5f51f7ee537043e25ccff9 (patch) | |
tree | f7637ab7ab7eb38ae7dc54205f27670b8aa13f30 | |
parent | d8e4b51a41a9507584d56946d0eae0e5cef6d6f5 (diff) |
take username from email address as fallback
-rw-r--r-- | IkiWiki/Plugin/openid.pm | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index f4ba8db18..f19a559a9 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -187,12 +187,17 @@ sub auth ($$) { $vident->signed_extension_fields('http://openid.net/srv/ax/1.0'), ); } + my $username; foreach my $ext (@extensions) { foreach my $field (qw{value.email email}) { if (exists $ext->{$field} && defined $ext->{$field} && length $ext->{$field}) { $session->param(email => $ext->{$field}); + if (! defined $username && + $ext->{$field}=~/(.+)@.+/) { + $username = $1; + } last; } } @@ -200,11 +205,15 @@ sub auth ($$) { if (exists $ext->{$field} && defined $ext->{$field} && length $ext->{$field}) { - $session->param(username => $ext->{$field}); + $username=$ext->{$field}; last; } } } + if (defined $username) { + $username=~s/\s+/_/g; + $session->param(username => $username); + } } else { error("OpenID failure: ".$csr->err); |