...
die Exception::NoUser->new(-requested_uri => $request->uri);
...
####
my $result = eval { $app->process($request) };
if ($@) {
$result = ref($@) ? $@ :
Exception::Unknown->new(-requested_uri => $request->uri,
-message => $@);
}
$self->emit($result);
##
##
sub process {
my($self, $request) = @_;
local Exception::current_uri = $request->uri;
$self->get_resources($request);
$self->authenticate_user($request);
$self->authorize_user($request);
$self->generate_response($request);
}
sub get_resources {
my($self,$request) = @_;
# Fetch your book from the database.
$self->set_book($book);
}
sub authenticate_user {
my($self, $request) = @_;
my $user = $self->make_user_from_request($request) or
die Exception::NoUser->new;
$self->set_user($user);
}
sub authorize_user {
my $self = shift;
$self->user_has_required_access($user) or
die Exception::InsufficientAccess->new(user => $user);
}