#!/usr/bin/perl use Dancer2; use lib '../lib'; use Dancer2::Plugin::Auth::Extensible; get '/' => sub { my $content = "

Non-secret home page!

"; if (my $user = logged_in_user()) { $content .= "

Hi there, $user->{name}!

"; $content .= '

logout

'; } else { $content .= "

Why not log in?

"; $content .= '

Users:
'; $content .= 'beerdrinker/password
'; $content .= 'vodkadrinker/secret
'; $content .= 'arakdrinker/arak
'; $content .= '

'; } $content .= <Psst, wanna know a secret?

Or maybe you want a beer

Or, a vodka?

Or, sake?

LINKS if (user_has_role('Beer_Drinker')) { $content .= "

You can drink beer

"; } if (user_has_role('Wine_Drinker')) { $content .= "

You can drink wine

"; } if (user_has_role('Vodka_Drinker')) { $content .= "

You can drink vodka

"; } if (user_has_role('Arak_Drinker')) { $content .= "

You can drink Arak

"; } if (user_has_role('Heavy_Drinker')) { $content .= "

You can drink anything

"; } return $content; }; get '/secret' => require_login sub { "Only logged-in users can see this. You are logged in as user " . logged_in_user->{name} }; get '/beer' => require_any_role [qw(Beer_Drinker Vodka_Drinker)], sub { "Any drinker can get beer."; }; get '/vodka' => require_role Vodka_Drinker => sub { "Only vode drinkers get vodka"; }; get '/sake' => require_role Heavy_Drinker => sub { "Only heavy drinkers get sake"; }; get '/realm' => require_login sub { "You are logged in using realm: " . session->{logged_in_user_realm}; }; dance();