The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Plack::Builder;


sub check_pass {
    my( $username, $pass ) = @_;
    return $username eq $pass;
}

sub my_app {
    my $env = shift; 
    my $page = '<html><body>' . $env->{PATH_INFO} . '<br>';
    if( $env->{'psgix.session'}{user_id} ){
        $page .= <<END;
        Hi $env->{'psgix.session'}{user_id}<br>
        <form id="logout_form" name="logout_form" method="post" action="/logout">
        <input type="submit" name="submit" id="submit" value="Logout" />
        </form>
END
    }
    else{
        $page .= '<a href="/login">login</a>';
    }
    $page .= '</body></html>';
    return [ 200, { 'Content-Type' => 'text/html', }, [ $page ] ];
}

builder {
    enable 'Session';
    enable 'Auth::Form', authenticator => \&check_pass;
    \&my_app
}