From 6afb6f4f0e7daaace34204f00f42c9caead72169 Mon Sep 17 00:00:00 2001 From: Thomas Klausner Date: Mon, 1 Dec 2008 21:32:40 +0100 Subject: added openid server stuff, taken straight from the Net::OpenID::Server docs --- lib/PAUSE/OpenID/Controller/OpenID.pm | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/PAUSE/OpenID/Controller/OpenID.pm (limited to 'lib') diff --git a/lib/PAUSE/OpenID/Controller/OpenID.pm b/lib/PAUSE/OpenID/Controller/OpenID.pm new file mode 100644 index 0000000..1082c20 --- /dev/null +++ b/lib/PAUSE/OpenID/Controller/OpenID.pm @@ -0,0 +1,53 @@ +package PAUSE::OpenID::Controller::OpenID; + +use strict; +use warnings; +use parent 'Catalyst::Controller'; +use Net::OpenID::Server; + + +# taken straight from Net::OpenID::Server +# http://search.cpan.org/src/MART/Net-OpenID-Server-1.02/doc/catalyst_sample +sub index : Local { + my ( $self, $c ) = @_; + + my $server = Net::OpenID::Server->new( + post_args => $c->req->params, + get_args => $c->req->params, + endpoint_url => $c->uri_for('/server'), + setup_url => $c->uri_for('/login'), + get_user => sub { + return $c->user_exists ? $c->user : undef; + }, + get_identity => sub { + my ( $u, $identity ) = @_; + return $identity unless $u; + return $c->uri_for( sprintf( '/user/%s', $u->username ) ); + }, + is_identity => sub { + my ( $u, $identity ) = @_; + return $u && $u->username eq ( split '/', $identity )[-1]; + }, + is_trusted => sub { + my ( $u, $trust_root, $is_identity ) = @_; + return $is_identity; + } + ); + + my ( $type, $data ) = $server->handle_page(); + + if ( $type eq 'redirect' ) { + return $c->res->redirect($data); + } + elsif ( $type eq 'setup' ) { + my $uri = $c->uri_for( '/login', $data ); + return $c->res->redirect($uri); + } + else { + $c->res->content_type($type); + $c->res->body($data); + } + +} + +1; -- cgit v1.2.3