package pmtt; use Dancer ':syntax'; our $VERSION = '0.1'; set session => 'YAML'; hook 'before' => sub { if (! session('user') && request->path_info !~ m{^/login}) { var requested_path => request->path_info; request->path_info('/login'); } }; get '/' => sub { template 'index'; }; get '/login' => sub { # Display a login page; the original URL they requested is available as # vars->{requested_path}, so could be put in a hidden field in the form template 'login', { path => vars->{requested_path} }; }; post '/login' => sub { # Validate the username and password they supplied if (params->{username} eq 'monktopher' && params->{password} eq 'passw0rd') { session user => params->{username}; redirect params->{path} || '/'; } else { redirect '/login?failed=1'; } }; any ['get','post'] => '/projects' => sub { return "Projects. Yay."; }; any ['get','post'] => '/logout' => sub { session->destroy(); redirect '/'; }; true;