package DPAE; #======================================================= # **** do not use Shotgun - resets session every request #======================================================= use Dancer2; use DPAE::Plugin::Admin; use Dancer2::Plugin::Auth::Extensible; use Data::Dumper; use Data::Printer alias => 'ddp'; our $VERSION = '0.1'; set auto_page => 1; # /denied (DPAE) # hook before => sub { my $session = session; ddp $session; }; hook before => sub { _debug('=' x 80) }; hook before_template_render => sub { my $tokens = shift; }; get '/' => sub { my $session = session; # p $session; template 'index'; }; get '/admin' => require_role Admin => sub { return 'you have Admin role'; }; get '/beer' => require_role BeerDrinker => sub { my $user = logged_in_user; # ddp $user; return 'you have BeerDrinker role'; }; get '/bar' => require_role NoExists => sub { return "you'll never get here!!"; }; get '/register' => require_role register => sub { my $user = logged_in_user; # ddp $user; # user_profile href return "you have 'register' role"; }; get '/users' => require_login sub { my $user = logged_in_user; # ddp $user; # user_profile href return "Hi there, $user->{username}"; }; get '/foo' => sub { if ( authenticate_user('swiller','swiller','config') ) { my $user = logged_in_user; # ddp $user; return $user->{name}; } return 'user not authenticated'; }; get '/wine' => sub { if ( authenticate_user('') ) { } else { } }; get '/drink' => require_any_role [qw(BeerDrinker VodkaDrinker)] => sub { return 'you can drink'; }; get '/get_drunk' => require_all_roles [qw(BeerDrinker VodkaDrinker)] => sub { return 'you are drunk!!'; }; get '/test' => require_role TestRole => sub { return 'test access success'; }; # DPAE::Plugin::Admin: get '/keys_to_safe' => needs_admin sub { return 'locked inside safe!!'; }; any '/logout' => sub { app->destroy_session; redirect '/'; }; sub permission_denied { template denied => {}, { layout => undef } } sub _debug { return unless app->environment eq 'development'; ddp @_; } =begin # auto-login: get '/login' => sub { session logged_in_user => 'raj'; session logged_in_user_realm => 'config'; #redirect '/'; }; =cut true;