<div dir="ltr">I don't see the /login handler - but could it be that it's a 'get' rather than a 'post'? Maybe change it to 'any' and see what happens?<div><br></div><div>Andrew</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Sat, Apr 26, 2014 at 8:09 AM, Joel Roth <span dir="ltr"><<a href="mailto:joelz@pobox.com" target="_blank">joelz@pobox.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Dancers,<br>
<br>
During development, I've put a file with the<br>
username/email/password on the site (generally bad practice,<br>
I know), and have a button for sending a password reminder.<br>
<br>
When the user posts a form with an "email" field to<br>
the /reminder route (see below) it results in the following error,<br>
which is issued *after* the mail is sent out:<br>
<br>
The page '<a href="http://localhost:3000/reminder" target="_blank">http://localhost:3000/reminder</a>' couldn't be<br>
loaded.  Message Corrupt<br>
<br>
I would expect a redirect to '/reminder-has-been-sent'<br>
<br>
Do you have any suggestions?<br>
<br>
Kind regards,<br>
<br>
Joel<br>
<br>
--<br>
<br>
post '/reminder'    => sub {<br>
    my $email = params->{email};<br>
    my $result = find_passwd($email);<br>
        session user => undef;<br>
        session failed_login => undef;<br>
    if ($result)<br>
    {<br>
        send_out_mail($result->{email}, $result->{body}); # sent!<br>
        redirect '/reminder-has-been-sent';               # no redirect<br>
    }<br>
    else<br>
    {<br>
        redirect '/email-not-found';<br>
    }<br>
};<br>
<br>
There is a "before" clause.<br>
<br>
<br>
before sub {<br>
    if (!session('user') and request->path_info !~<br>
        m{(login|bye|reminder|reminder-has-been-sent|email-not-found)$}) {<br>
        # Pass the original path requested along to the handler:<br>
        session requested_path => request->path_info;<br>
        redirect('/login');<br>
    }<br>
    elsif ( ! authorized( session('user'), request->path_info)<br>
            and request->path_info ne '/forbidden'){<br>
        # Pass the original path requested along to the handler:<br>
        session requested_path => request->path_info;<br>
        redirect('/forbidden');<br>
    }<br>
};<br>
<br>
sub find_passwd {<br>
        my $user_or_email = shift;<br>
        # we expect to be in Dancer app directory<br>
        my @entries = read_file('pass');<br>
        my $body;<br>
        my ($name, $email, $username, $password);<br>
        map { chomp } @entries;<br>
        foreach my $entry( @entries ){<br>
                ($name, $email, $username, $password) = split /\s*:\s*/, $entry;<br>
                next if $user_or_email ne $username and $user_or_email ne $email;<br>
                say "-->$name";<br>
                $body = mail_body($name, $username, $password);<br>
                last<br>
        }<br>
        return({ email => $email, name => $name, password => $password, body => $body })<br>
                if $body;<br>
}<br>
sub mail_body {<br>
        my ($name, $username, $password) = @_;<br>
        my ($first) = $name =~ /(.+?)\s*\S*$/;<br>
        #say $first;<br>
<<FORM;<br>
Dear $first,<br>
<br>
This automated mail contains your login credentials for<br>
<br>
<a href="http://example.com" target="_blank">http://example.com</a><br>
<br>
Your username is $username<br>
Your password is $password<br>
<br>
FORM<br>
}<br>
sub send_out_mail {<br>
        my( $email, $body) = @_;<br>
        my $sender = '<a href="mailto:joelz@pobox.com">joelz@pobox.com</a>';<br>
        Email::Stuffer->from($sender)<br>
                                   ->to($email)<br>
                                   ->subject("Reminder")<br>
                                   ->text_body($body)<br>
                                   ->send;<br>
<br>
}<br>
<br>
1<br>
<span class="HOEnZb"><font color="#888888">--<br>
Joel Roth<br>
<br>
<br>
_______________________________________________<br>
dancer-users mailing list<br>
<a href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br>
<a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br>
</font></span></blockquote></div><br></div>