diff options
-rw-r--r-- | lib/VNWeb/Discussions/Board.pm | 2 | ||||
-rw-r--r-- | lib/VNWeb/Discussions/Search.pm | 4 | ||||
-rw-r--r-- | lib/VNWeb/Discussions/UPosts.pm | 2 | ||||
-rw-r--r-- | lib/VNWeb/Misc/History.pm | 12 | ||||
-rw-r--r-- | lib/VNWeb/User/List.pm | 10 | ||||
-rw-r--r-- | lib/VNWeb/User/Lists.pm | 12 | ||||
-rw-r--r-- | lib/VNWeb/User/Notifications.pm | 4 | ||||
-rw-r--r-- | lib/VNWeb/VN/Votes.pm | 8 | ||||
-rw-r--r-- | lib/VNWeb/Validation.pm | 4 |
9 files changed, 29 insertions, 29 deletions
diff --git a/lib/VNWeb/Discussions/Board.pm b/lib/VNWeb/Discussions/Board.pm index 0af7f2cc..edce6789 100644 --- a/lib/VNWeb/Discussions/Board.pm +++ b/lib/VNWeb/Discussions/Board.pm @@ -7,7 +7,7 @@ use VNWeb::Discussions::Lib; TUWF::get qr{/t/(all|$BOARD_RE)}, sub { my($type, $id) = tuwf->capture(1) =~ /^([^0-9]+)([0-9]*)$/; - my $page = eval { tuwf->validate(get => p => { upage => 1 })->data } || 1; + my $page = tuwf->validate(get => p => { upage => 1 })->data; my $obj = !$id ? undef : $type eq 'v' ? tuwf->dbRowi('SELECT id, title, original, hidden AS entry_hidden, locked AS entry_locked FROM vn WHERE id =', \$id) : diff --git a/lib/VNWeb/Discussions/Search.pm b/lib/VNWeb/Discussions/Search.pm index 511267b0..06366caf 100644 --- a/lib/VNWeb/Discussions/Search.pm +++ b/lib/VNWeb/Discussions/Search.pm @@ -7,11 +7,11 @@ use VNWeb::Discussions::Lib; sub filters_ { state $schema = tuwf->compile({ type => 'hash', keys => { bq => { required => 0, default => '' }, - b => { type => 'array', scalar => 1, required => 0, default => [keys %BOARD_TYPE], values => { enum => \%BOARD_TYPE } }, + b => { type => 'array', scalar => 1, onerror => [keys %BOARD_TYPE], values => { enum => \%BOARD_TYPE } }, t => { anybool => 1 }, p => { page => 1 }, }}); - my $filt = eval { tuwf->validate(get => $schema)->data } || tuwf->pass; + my $filt = tuwf->validate(get => $schema)->data; my %boards = map +($_,1), $filt->{b}->@*; form_ method => 'get', action => tuwf->reqPath(), sub { diff --git a/lib/VNWeb/Discussions/UPosts.pm b/lib/VNWeb/Discussions/UPosts.pm index ead0ac7f..45be3f0b 100644 --- a/lib/VNWeb/Discussions/UPosts.pm +++ b/lib/VNWeb/Discussions/UPosts.pm @@ -38,7 +38,7 @@ TUWF::get qr{/$RE{uid}/posts}, sub { my $u = tuwf->dbRowi('SELECT id, ', sql_user(), 'FROM users u WHERE id =', \tuwf->capture('id')); return tuwf->resNotFound if !$u->{id}; - my $page = eval { tuwf->validate(get => p => { upage => 1 })->data } || 1; + my $page = tuwf->validate(get => p => { upage => 1 })->data; my $from_and_where = sql 'FROM threads_posts tp diff --git a/lib/VNWeb/Misc/History.pm b/lib/VNWeb/Misc/History.pm index d3caf4a9..26ef5f48 100644 --- a/lib/VNWeb/Misc/History.pm +++ b/lib/VNWeb/Misc/History.pm @@ -103,14 +103,14 @@ sub filters_ { state $schema = tuwf->compile({ type => 'hash', keys => { # Types - t => { type => 'array', scalar => 1, required => 0, default => [map $_->[0], @types], values => { enum => [(map $_->[0], @types), 'a'] } }, - m => { required => 0, enum => [ 0, 1 ] }, # Automated edits - h => { required => 0, default => 0, enum => [ -1..1 ] }, # Hidden items - e => { required => 0, default => 0, enum => [ -1..1 ] }, # Existing/new items - r => { required => 0, default => 0, enum => [ 0, 1 ] }, # Include releases + t => { type => 'array', scalar => 1, onerror => [map $_->[0], @types], values => { enum => [(map $_->[0], @types), 'a'] } }, + m => { onerror => undef, enum => [ 0, 1 ] }, # Automated edits + h => { onerror => 0, enum => [ -1..1 ] }, # Hidden items + e => { onerror => 0, enum => [ -1..1 ] }, # Existing/new items + r => { onerror => 0, enum => [ 0, 1 ] }, # Include releases p => { page => 1 }, }}); - my $filt = eval { tuwf->validate(get => $schema)->data } || tuwf->pass; + my $filt = tuwf->validate(get => $schema)->data; $filt->{m} //= $type ? 0 : 1; # Exclude automated edits by default on the main 'recent changes' view. diff --git a/lib/VNWeb/User/List.pm b/lib/VNWeb/User/List.pm index 72da203d..7d5311a2 100644 --- a/lib/VNWeb/User/List.pm +++ b/lib/VNWeb/User/List.pm @@ -54,12 +54,12 @@ sub listing_ { TUWF::get qr{/u/(?<char>[0a-z]|all)}, sub { my $char = tuwf->capture('char'); - my $opt = eval { tuwf->validate(get => + my $opt = tuwf->validate(get => p => { upage => 1 }, - s => { required => 0, default => 'registered', enum => [qw[username registered vns votes wish changes tags]] }, - o => { required => 0, default => 'd', enum => [qw[a d]] }, - q => { required => 0, default => '' }, - )->data } || return tuwf->resNotFound; + s => { onerror => 'registered', enum => [qw[username registered vns votes wish changes tags]] }, + o => { onerror => 'd', enum => [qw[a d]] }, + q => { onerror => '' }, + )->data; my @where = ( $char eq 'all' ? () : $char eq '0' ? "ascii(username) not between ascii('a') and ascii('z')" : "username like '$char%'", diff --git a/lib/VNWeb/User/Lists.pm b/lib/VNWeb/User/Lists.pm index 2c0548c1..980bd807 100644 --- a/lib/VNWeb/User/Lists.pm +++ b/lib/VNWeb/User/Lists.pm @@ -278,14 +278,14 @@ sub opt { tuwf->reqGet('votes') ? { p => 1, l => [7], s => 'voted', o => 'd', c => [qw/vote voted/] } : tuwf->reqGet('wishlist') ? { p => 1, l => [5], s => 'title', o => 'a', c => [qw/added/] } : # Full options - eval { tuwf->validate(get => + tuwf->validate(get => p => { upage => 1 }, - l => { type => 'array', scalar => 1, required => 0, default => [], values => { int => 1 } }, - s => { required => 0, default => 'title', enum => [qw[ title label vote voted added modified started finished rel rating ]] }, - o => { required => 0, default => 'a', enum => ['a', 'd'] }, - c => { type => 'array', scalar => 1, required => 0, default => [], values => { enum => [qw[ vote voted added modified started finished rel rating ]] } }, + l => { onerror => [], type => 'array', scalar => 1, values => { int => 1 } }, + s => { onerror => 'title', enum => [qw[ title label vote voted added modified started finished rel rating ]] }, + o => { onerror => 'a', enum => ['a', 'd'] }, + c => { onerror => [], type => 'array', scalar => 1, values => { enum => [qw[ vote voted added modified started finished rel rating ]] } }, q => { required => 0 }, - )->data } || { p => 1, l => [], s => 'title', o => 'a', c => [] }; + )->data; # $labels only includes labels we are allowed to see, getting rid of any labels in 'l' that aren't in $labels ensures we only filter on visible labels my %accessible_labels = map +($_->{id}, 1), @$filtlabels; diff --git a/lib/VNWeb/User/Notifications.pm b/lib/VNWeb/User/Notifications.pm index 4f45e0b3..c74cc1a8 100644 --- a/lib/VNWeb/User/Notifications.pm +++ b/lib/VNWeb/User/Notifications.pm @@ -90,10 +90,10 @@ TUWF::get qr{/$RE{uid}/notifies}, sub { my $id = tuwf->capture('id'); return tuwf->resNotFound if !auth || $id != auth->uid; - my $opt = eval { tuwf->validate(get => + my $opt = tuwf->validate(get => p => { page => 1 }, r => { anybool => 1 }, - )->data } || { p => 1, r => 0 }; + )->data; my $where = sql_and( sql('uid =', \$id), diff --git a/lib/VNWeb/VN/Votes.pm b/lib/VNWeb/VN/Votes.pm index 1d4fe774..00ea04b6 100644 --- a/lib/VNWeb/VN/Votes.pm +++ b/lib/VNWeb/VN/Votes.pm @@ -34,11 +34,11 @@ TUWF::get qr{/$RE{vid}/votes}, sub { my $v = tuwf->dbRowi('SELECT id, title, hidden AS entry_hidden, locked AS entry_locked FROM vn WHERE id =', \$id); return tuwf->resNotFound if !$v->{id} || $v->{hidden}; - my $opt = eval { tuwf->validate(get => + my $opt = tuwf->validate(get => p => { page => 1 }, - o => { required => 0, default => 'd', enum => ['a','d'] }, - s => { required => 0, default => 'date', enum => ['date', 'title', 'vote' ] } - )->data } || { p => 1, o => 'd', s => 'date' }; + o => { onerror => 'd', enum => ['a','d'] }, + s => { onerror => 'date', enum => ['date', 'title', 'vote' ] } + )->data; my $fromwhere = sql 'FROM ulist_vns uv diff --git a/lib/VNWeb/Validation.pm b/lib/VNWeb/Validation.pm index 3cec3385..c506903a 100644 --- a/lib/VNWeb/Validation.pm +++ b/lib/VNWeb/Validation.pm @@ -22,8 +22,8 @@ our @EXPORT = qw/ TUWF::set custom_validations => { id => { uint => 1, max => 1<<40 }, editsum => { required => 1, length => [ 2, 5000 ] }, - page => { uint => 1, min => 1, max => 1000, required => 0, default => 1 }, - upage => { uint => 1, min => 1, required => 0, default => 1 }, # pagination without a maximum + page => { uint => 1, min => 1, max => 1000, required => 0, default => 1, onerror => 1 }, + upage => { uint => 1, min => 1, required => 0, default => 1, onerror => 1 }, # pagination without a maximum username => { regex => qr/^(?!-*[a-z][0-9]+-*$)[a-z0-9-]*$/, minlength => 2, maxlength => 15 }, password => { length => [ 4, 500 ] }, language => { enum => \%LANGUAGE }, |