/auth.pl
use lib qw(/home/doa/perlmods/lib/perl/5.8 /home/doa/perlmods/lib/perl/5.8.8 /home/doa/perlmods/share/perl/5.8 /home/doa/perlmods/share/perl/5.8.8);
use CGI qw/:cgi/;
use CGI::Carp qw/fatalsToBrowser/;
use CGI::Session;
use Net::OpenID::Consumer;
use LWPx::ParanoidAgent;
use DBI;
use Digest::SHA qw/sha256_base64/;
use Vector::User;
use strict;
my $cgi = new CGI;
my $session = new CGI::Session($cgi);
{
my ($time) = @_;
return sha256_base64("nMgGvUbvI9fL7FafdUQQqcQL+LJBoygSSM8eKyLB7KztDCcoogHAuSbpUuNrGTnzpDewiVkSvL2DcWabNfrNIg${time}vyfC7rWPoimEN1e2T7NkUW8VKBIhGKTBwHEpMISw2DwNFhoraVNbmXTIeBChFPhTxkzkVOMAQTQQMZY9bi0h4M");
}
my $csr = Net::OpenID::Consumer->new(
ua => LWPx::ParanoidAgent->new,
args => $cgi,
consumer_secret => \&consumer_secret,
required_root => "http://dominionofawesome.com/vector/"
);
if (param('openid.mode')) {
$csr->handle_server_response(
not_openid => sub {
die "Not an OpenID message";
},
setup_required => sub {
my $setup_url = shift;
print redirect($setup_url);
exit 0;
},
cancelled => sub {
# Do something appropriate when the user hits "cancel" at the OP
print redirect('http://dominionofawesome.com/vector/');
exit 0;
},
verified => sub {
my $vident = shift;
# Do something with the VerifiedIdentity object $vident
my $user = Vector::User->fetch_by_name($vident->url)
or die "Could not fetch user";
$session->param('id', $user->{ });
$session->param('username', $vident->url);
$session->param('displayname', $vident->display);
$session->flush();
print redirect('http://dominionofawesome.com/vector/');
exit 0;
},
error => sub {
my ($errcode, $errtext) = @_;
die("$errcode: $errtext");
},
);
} elsif (param('login')) {
my $uri = param('login');
# Cheat
if ($uri =~ /^\w+$/) {
$uri = "http://id.dominionofawesome.com/$uri";
}
my $claimed_identity = $csr->claimed_identity($uri)
or die "could not get claimed identity for $uri: " . $csr->errcode;
my $check_url = $claimed_identity->check_url(
return_to => 'http://dominionofawesome.com/vector/auth',
trust_root => 'http://dominionofawesome.com/vector/',
delayed_return => 1,
);
print redirect($check_url);
exit 0;
} elsif (param('logout')) {
$session->clear();
$session->flush();
print redirect('http://dominionofawesome.com/vector/');
exit 0;
} else {
print "Content-type: text/plain\r\n\r\n";
my @params = param();
print "@params\n";
}