App-Cinema
view release on metacpan or search on metacpan
lib/App/Cinema/Controller/User.pm view on Meta::CPAN
package App::Cinema::Controller::User;
use Moose;
use namespace::autoclean;
use Captcha::reCAPTCHA;
use Mail::Mailer;
require App::Cinema::Event;
use HTTP::Date qw/time2iso/;
BEGIN {
extends qw/Catalyst::Controller::FormBuilder/;
our $VERSION = $App::Cinema::VERSION;
}
sub captcha : Local {
my ( $self, $c ) = @_;
my $challenge = $c->req->param('recaptcha_challenge_field');
my $response = $c->req->param('recaptcha_response_field');
my $rc = Captcha::reCAPTCHA->new;
my $pub_key = $c->config->{PUB_KEY};
$c->session->{human} = undef;
# Check response
if ($challenge) {
my $result = $rc->check_answer(
$c->config->{PRI_KEY},
$c->config->{REMOTE_IP},
$challenge, $response
);
if ( $result->{is_valid} ) {
$c->session->{human} = 1;
$c->res->redirect( $c->uri_for('/user/login') );
return;
}
else {
$c->stash->{err} = $result->{error};
}
}
$c->stash->{key} = $pub_key;
$c->stash->{rc} = $rc;
}
sub login : Local Form {
my ( $self, $c ) = @_;
if ( !$c->session->{human} ) {
$c->res->redirect( $c->uri_for('/user/captcha') );
return;
}
my $form = $self->formbuilder;
# Get the username and password from form
my $uid = $form->field('username') || "";
my $pwd = $form->field('password') || "";
# If the username and password values were found in form
if ( $form->submitted && $form->validate ) {
my $status = $c->authenticate(
{
username => $uid,
password => $pwd,
active => 1
( run in 1.662 second using v1.01-cache-2.11-cpan-39bf76dae61 )