Authenticates user with external OpenID provider, creates VJournal
session and sets approprieate cookie.
+=head1 WORKFLOW
+
+=over 4
+
+=item No paramteters,
+
+Show login form
+
+=item Parameters username and site
+
+Start openid auth
+
+=item OpenID parameters
+
+Perform authentication. If successul, create session.
+If E-mail is provided, redirect back to blog. Otherwise - show form
+to requset E-Mail. Create session anyway.
+
+=item email parameter + cookie
+
+Update session. Redirect to blog.
+
+=back
+
=cut
+
+use CGI;
+use Net::OpenID::Consumer;
+use VJournal::Session;
+
+sub verify {
+ my ($cgi,$consumer)=@_;
+ if (my $setup_url = $csr->user_setup_url) {
+ print $cgi->redirect(-location=>$setup_url);
+ return;
+ } elsif ($csr->user_cancel) {
+ show_error("OpenID server cancelled operation");
+ } elsif (my $vident= $csr->verified_identity) {
+ my $user = $vident->url();
+ # Getting OPENDID extensions from
+ my @extension =grep { defined } (
+ $vident->signed_extension_fields('http://openid.net/extensions/sreg/1.1'),
+ $vident->signed_extension_fields('http://openid.net/srv/ax/1.0'),
+
+ );
+
+ # getting foaf info;
+ my $foaf = $vident->declared_foaf();
+ my ($email,$avatar) = ($foaf?get_foaf($foaf):(undef,undef));
+ my $session = VJournal::Session->create(-cgi=>$cgi,
+ -name => $name, -idenity=>$user);
+ if (!$email) {
+ show_email_form);
+ }
+
+}
+