Authentication Controller
sub access_denied {
my ($self, $c) = @_;
$c->session->{login_from} = $c->req->uri;
$c->flash->{message} = 'Please log in to continue.';
$c->response->redirect($c->uri_for('/login'));
}
- Then you can add a login action:
use Moose::Autobox; # for hslice;
sub login :Global ActionClass('REST') {}
sub login_GET {
my ($self, $c) = @_;
$c->stash->{template} = 'login.tt';
}
sub login_POST {
my ($self, $c) = @_;
if($c->authenticate($c->req->params->hslice([qw/username password/]))){
$c->flash->{message} = 'You have been logged in.';
my $from = delete $c->session->{login_from} ||
$c->uri_for('/');
$c->res->redirect($from);
}
else {
$c->flash->{message} = 'You could not be logged in.';
$c->res->redirect($c->uri_for('/login'));
}
}
sub logout :Global {
my ($self, $c) = @_;
$c->logout;
$c->flash->{message} = 'You have been logged out.';
$c->res->redirect($c->uri_for('/'));
}