Add some robustness against bogus parameters.
This commit is contained in:
parent
a12aae81dc
commit
d70f5d3a6d
|
@ -5,39 +5,70 @@ use MyModel::Author;
|
|||
|
||||
sub books ($self) {
|
||||
my $page_number = $self->param('page_number') // 1;
|
||||
if ($page_number < 1) {
|
||||
$self->redirect_to('not_found');
|
||||
return;
|
||||
}
|
||||
my $book_model = MyModel::Book->new(rows_per_page => $self->rpp);
|
||||
my $book_page = $book_model->get_page(
|
||||
$page_number,
|
||||
$self->param('title_like'),
|
||||
);
|
||||
my $pager = $book_page->pager;
|
||||
if ($page_number > $pager->last_page) {
|
||||
$self->redirect_to('not_found');
|
||||
return;
|
||||
}
|
||||
$self->render(
|
||||
book_page => $book_page,
|
||||
pager => $book_page->pager,
|
||||
pager => $pager,
|
||||
);
|
||||
}
|
||||
|
||||
sub authors ($self) {
|
||||
my $page_number = $self->param('page_number') // 1;
|
||||
if ($page_number < 1) {
|
||||
$self->redirect_to('not_found');
|
||||
return;
|
||||
}
|
||||
my $author_model = MyModel::Author->new(rows_per_page => $self->rpp);;
|
||||
my $author_page = $author_model->get_page(
|
||||
$page_number,
|
||||
$self->param('name_like'),
|
||||
);
|
||||
my $pager = $author_page->pager;
|
||||
if ($page_number > $pager->last_page) {
|
||||
$self->redirect_to('not_found');
|
||||
return;
|
||||
}
|
||||
$self->render(
|
||||
author_page => $author_page,
|
||||
pager => $author_page->pager,
|
||||
pager => $pager,
|
||||
);
|
||||
}
|
||||
|
||||
sub author ($self) {
|
||||
my ($id, $page_number) = ($self->param('id'), $self->param('page_number'));
|
||||
if ($page_number < 1) {
|
||||
$self->redirect_to('not_found');
|
||||
return;
|
||||
}
|
||||
my ($author, $book_page) = MyModel::Author->new(
|
||||
rows_per_page => $self->rpp
|
||||
)->find_by_id($id, $page_number);
|
||||
if (!defined $author) {
|
||||
$self->redirect_to('not_found');
|
||||
return;
|
||||
}
|
||||
my $pager = $book_page->pager;
|
||||
if ($page_number > $pager->last_page) {
|
||||
$self->redirect_to('not_found');
|
||||
return;
|
||||
}
|
||||
$self->render(
|
||||
author => $author,
|
||||
book_page => $book_page,
|
||||
pager => $book_page->pager,
|
||||
pager => $pager,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ sub get_page ($self, $page_number = 1, $name_like = undef) {
|
|||
|
||||
sub find_by_id ($self, $id, $page_number = 1) {
|
||||
my $author = $self->schema->resultset('Author')->find({ id => $id });
|
||||
return (undef, undef) if (!defined $author);
|
||||
my $book_page = $author->books_rs->search(
|
||||
undef,
|
||||
{ order_by => [ "me.title" ],
|
||||
|
|
Loading…
Reference in New Issue