[SP-pm] Validar session no Catalyst

Nelson Ferraz nferraz at gmail.com
Mon Jul 11 05:37:58 PDT 2011


   Lucas> para validar:
   Lucas> sub end :Private {
   Lucas>     my ( $self, $c ) = @_;
   Lucas>     if(!$c->user_exists){
   Lucas>         $c->res->redirect('/login');
   Lucas>     }
   Lucas> }
   Lucas>
   Lucas> para pegar valores do Args:
   Lucas> sub alterar :LocalRegex('[0-9]') {
   Lucas>     my ( $self, $c, @get) = @_;
   Lucas>     $c->stash->{valor} =  $get[0];
   Lucas>     $c->forward('View::TT');
   Lucas> }

Sem querer iniciar uma flamewar, mas este é apenas mais um exemplo
onde o Catalyst complica demais algo que deveria ser simples.

Veja como isso pode ser feito no Mojolicious:

#!/usr/bin/perl

use Mojolicious::Lite; # implicitly use strict and warnings

# 1: verificar uma variável de sessão

get '/' => sub {
    my $self = shift;

    my $username = $self->session('username');

    self->redirect_to('/login') if !$username;

    $self->render( text => "Hello, $username" );
};

# 2: definir uma variável de sessão

get '/login' => sub {
    my $self = shift;

    my $username = $self->param('username');
    my $password = $self->param('password');

    if ($username eq 'foo' and $password eq 'bar') {
        $self->session( username => $username );
        $self->redirect_to('/');
    }

    $self->render( text => "Please use:
http://localhost:3000/login?username=xxx;password=yyy" );
};

# 3: remover uma variável de sessão

get '/logout' => sub {
    my $self = shift;

    my $username = $self->session('username');
    $self->session( username => undef ); # poderia ter usado "expire"

    $self->render( text => "Bye bye, $username" );
};

app->start();

__END__

Mais informações:

http://search.cpan.org/~sri/Mojolicious-1.64/lib/Mojolicious/Lite.pm#Sessions

[]s

Nelson

PS: Até onde eu sei, o Eden estava trabalhando em um projeto que
traria esse tipo de simplicidade para o Catalyst. Em que pé está esse
projeto, Eden?


More information about the SaoPaulo-pm mailing list