Implement CAPTCHA

This commit is contained in:
swag 2021-12-18 23:03:53 -05:00
parent 5124f61383
commit b3da6874e1
3 changed files with 38 additions and 2 deletions

View File

@ -34,6 +34,14 @@ helper message => sub {
};
# Routes
under sub ($c) {
# Opt out of Google FLoC
# https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network
$c->res->headers->header('Permissions-Policy', 'interest-cohort=()');
1;
};
get '/' => sub ($c) {
my $posts = $c->message->get_posts();
my $last_page = $c->message->get_last_page(@$posts);
@ -53,8 +61,9 @@ any '/sign' => sub ($c) {
if ($c->req->method() eq 'POST') {
my $name = $c->param('name');
my $message = $c->param('message');
my $answer = $c->param('answer');
$c->message->send_post($name, $message);
$c->message->send_post($name, $message) if $answer;
$c->redirect_to('index');
}
else {

View File

@ -36,7 +36,13 @@ sub max_posts($self, $value = undef) {
}
sub get_last_page($self, @posts) {
sprintf('%d', scalar(@posts) / $self->{'max_posts'}) + 1
# Add a page if we have "remainder" posts
if (scalar(@posts) % $self->{'max_posts'}) {
sprintf('%d', scalar(@posts) / $self->{'max_posts'}) + 1
}
else {
sprintf('%d', scalar(@posts) / $self->{'max_posts'})
}
}
1;

View File

@ -11,6 +11,27 @@
<th>Message:</th>
<td><%= text_area 'message', cols => 40, rows => 6 %></td>
</tr>
<tr>
<th>Swagg CAPTCHA:</th>
<td>
<%= radio_button answer => 0 %>
<%= label_for answer => "I don\'t want to post" %>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
<%= radio_button answer => "false" %>
<%= label_for answer => "I\'m ready to post" %>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
<%= radio_button answer => undef %>
<%= label_for answer => 'This is spam, do not post' %>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td><%= submit_button 'Send it' %></td>