#!/usr/bin/env perl
BEGIN {
unshift
@INC
,
"$FindBin::Bin/../lib"
}
print
STDERR
"[NOTICE] should be used in domains other than 'localhost' (e.g. local.example.com)\n"
;
my
$site
=
'Github'
;
helper
site
=>
sub
{
$site
};
my
$pit
= pit_get(
lc
(
$site
),
require
=> {
key
=>
"Github Client ID"
,
secret
=>
"Github Secret"
,
}
);
plugin
'Mojolicious::Plugin::Web::Auth'
,
module
=>
ucfirst
(
lc
$site
),
key
=>
$pit
->{key},
secret
=>
$pit
->{secret},
on_finished
=>
sub
{
my
(
$c
,
$access_token
,
$account_info
) =
@_
;
$c
->session(
'access_token'
=>
$access_token
);
$c
->session(
'account_info'
=>
$account_info
);
return
$c
->redirect_to(
'index'
);
};
get
'/'
=>
sub
{
my
(
$c
) =
@_
;
unless
(
$c
->session(
'account_info'
) ) {
return
$c
->redirect_to(
'login'
);
}
} =>
'index'
;
any [
qw/get post/
] =>
'/login'
=>
sub
{
my
(
$c
) =
@_
;
if
(
uc
$c
->req->method eq
'POST'
) {
return
$c
->redirect_to(
sprintf
(
"/auth/%s/authenticate"
,
lc
$site
) );
}
} =>
'login'
;
post
'/logout'
=>
sub
{
my
(
$c
) =
@_
;
$c
->session(
expires
=> 1 );
$c
->redirect_to(
'index'
);
} =>
'logout'
;
app->start;