Amon2-Auth-Site-Hatena

 view release on metacpan or  search on metacpan

eg/app.psgi  view on Meta::CPAN

#!perl

# usage:
# $ HATENA_CONSUMER_KEY=... HATENA_CONSUMER_SECRET=... plackup eg/app.psgi

use strict;
use warnings;
use utf8;

use File::Spec;
use File::Basename;
use lib File::Spec->catdir(dirname(__FILE__), '../lib');

use Amon2::Lite;
use Plack::Builder;

sub config {
    +{
        Auth => {
            Hatena => {
                consumer_key    => $ENV{HATENA_CONSUMER_KEY},
                consumer_secret => $ENV{HATENA_CONSUMER_SECRET},
            }
        }
    }
}

get '/' => sub {
    my $c    = shift;
    my $auth = $c->session->get('auth_hatena') || {};
    $c->render('index.tt', { user => $auth->{user} });
};

get '/logout' => sub {
    my ($c) = @_;
    $c->session->expire;
    $c->redirect('/');
};

__PACKAGE__->load_plugin('Web::Auth', {
    module   => 'Hatena',
    on_error => sub {
        my ($c, $error_message) = @_;
        die $error_message;
    },
    on_finished => sub {
        my ($c, $token, $token_secret, $user) = @_;

        $c->session->set(auth_hatena => {
            user         => $user,
            token        => $token,
            token_secret => $token_secret,
        });

        $c->redirect('/');
    },
});

builder {
    enable 'Plack::Middleware::Session';
    __PACKAGE__->to_app;
};

__DATA__

@@ index.tt
<!doctype html>
<html>



( run in 1.857 second using v1.01-cache-2.11-cpan-5735350b133 )