[Cascavel-pm] Catalyst: Autentication
Ednardo Lobo
ednardo em lobo.eti.br
Quinta Maio 27 06:14:39 PDT 2010
Giuliani,
Seguem esquemas complementares:
- Role
------------------------------------------------------------------------
__PACKAGE__->load_components("Core");
__PACKAGE__->table("role");
__PACKAGE__->add_columns(
"id",
{ data_type => "INT", default_value => undef, is_nullable => 0, size
=> 11 },
"role",
{
data_type => "TEXT",
default_value => undef,
is_nullable => 1,
size => 65535,
},
);
__PACKAGE__->set_primary_key("id");
------------------------------------------------------------------------
- UserRole
------------------------------------------------------------------------
__PACKAGE__->load_components("Core");
__PACKAGE__->table("user_role");
__PACKAGE__->add_columns(
"user_id",
{ data_type => "INT", default_value => 0, is_nullable => 0, size => 11 },
"role_id",
{ data_type => "INT", default_value => 0, is_nullable => 0, size => 11 },
);
__PACKAGE__->set_primary_key("user_id", "role_id");
__PACKAGE__->belongs_to(user => 'sgle::Schema::User', 'user_id');
__PACKAGE__->belongs_to(role => 'sgle::Schema::Role', 'role_id');
------------------------------------------------------------------------
Precisando de qualquer outra informação, é só solicitar.
Agradeço desde já sua ajuda!
Giuliani Sanches escreveu:
> Em 27 de maio de 2010 07:55, Ednardo Lobo <ednardo em lobo.eti.br> escreveu:
>> Giuliani,
>>
>> Ajustei meu "realm" para:
>>
>> <Plugin::Authentication>
>> default_realm default
>> <realms>
>> <default>
>> <credential>
>> class Password
>> password_field password
>> password_type clear
>> </credential>
>> <store>
>> class DBIx::Class
>> user_model sgle::Schema::User
>> role_relation roles
>> role_field role
>> </store>
>> </default>
>> </realms>
>> </Plugin::Authentication>
>>
>> Não consegui, entretanto, compreender o que é exatamente o "user_model",
>> cuja definição extraída do manual reproduzo a seguir:
>>
>> ------------------------------------------------------------------------
>> user_model
>>
>> Contains the model name (as passed to $c->model()) of the DBIx::Class schema
>> to use as the source for user information. This config item is REQUIRED.
>>
>> (Note that this option used to be called user_class. user_class is still
>> functional, but should be used only for compatibility with previous configs.
>> The setting called user_class on other authentication stores is present, but
>> named store_user_class in this store)
>> ------------------------------------------------------------------------
>>
>> Informei, porém, a classe que refere-se ao esquema da minha tabela de
>> usuários onde fica registrado o "username" e "password", veja:
>>
>> ------------------------------------------------------------------------
>> __PACKAGE__->load_components("Core");
>> __PACKAGE__->table("user");
>> __PACKAGE__->add_columns(
>> "id",
>> { data_type => "INT", default_value => undef, is_nullable => 0, size => 11
>> },
>> "username",
>> {
>> data_type => "TEXT",
>> default_value => undef,
>> is_nullable => 1,
>> size => 65535,
>> },
>> "password",
>> {
>> data_type => "TEXT",
>> default_value => undef,
>> is_nullable => 1,
>> size => 65535,
>> },
>> "email_address",
>> {
>> data_type => "TEXT",
>> default_value => undef,
>> is_nullable => 1,
>> size => 65535,
>> },
>> "first_name",
>> {
>> data_type => "TEXT",
>> default_value => undef,
>> is_nullable => 1,
>> size => 65535,
>> },
>> "last_name",
>> {
>> data_type => "TEXT",
>> default_value => undef,
>> is_nullable => 1,
>> size => 65535,
>> },
>> "active",
>> { data_type => "INT", default_value => undef, is_nullable => 1, size => 11
>> },
>> );
>>
>> __PACKAGE__->set_primary_key("id");
>>
>> __PACKAGE__->has_many(user_roles => 'sgle::Schema::UserRole', 'user_id');
>> __PACKAGE__->many_to_many(roles => 'user_roles', 'role');
>> ------------------------------------------------------------------------
>>
>> Entretanto, quando a ação "Controller::Login" é tomada apenas a tabela
>> 'role' é acessada, veja:
>>
>> ------------------------------------------------------------------------
>> SELECT me.id, me.role FROM role me
>> ------------------------------------------------------------------------
>>
>> E não consegui descobrir a razão disto. Esperava que tabela 'user' também
>> fosse acessada.
>>
>> Onde estou errando?
>>
>>
>> Grato,
>>
>>
>> Giuliani Sanches escreveu:
>>> Em 26 de maio de 2010 14:33, Ednardo Lobo <ednardo em lobo.eti.br> escreveu:
>>>> Giuliani,
>>>>
>>>> O "default realm" está configurado, veja:
>>>>
>>>> - sgle.conf
>>>>
>>>> <Plugin::Authentication>
>>>> <default>
>>>> password_type clear
>>>> user_model DB::User
>>>> class SimpleDB
>>>> </default>
>>>> </Plugin::Authentication>
>>>>
>>>>
>>>> Li o artigo e a documentação que indicou, mas não ajudaram.
>>>>
>>>> Alguma outra sugestão?
>>>>
>>>>
>>>> Grato,
>>>>
>>>> Giuliani Sanches escreveu:
>>>>> 2010/5/26 Ednardo Lobo <ednardo em lobo.eti.br>:
>>>>>> Pessoal,
>>>>>>
>>>>>> Estou testando o módulo Catalyst::Plugin::Autentication e não estou
>>>>>> conseguindo identificar a origem do erro:
>>>>>>
>>>>>> --------------
>>>>>> Caught exception in sgle::Controller::Login->index "authenticate called
>>>>>> with
>>>>>> nonexistant realm: 'default'. at
>>>>>>
>>>>>>
>>>>>> /home/ftp/www/lobosnet.cjb.net/sgle/script/../lib/sgle/Controller/Login.pm
>>>>>> line 30"
>>>>>> --------------
>>>>>>
>>>>>> Isso ocorre quando a seguinte ação é tomada:
>>>>>>
>>>>>> - Login.pm
>>>>>>
>>>>>> sub index :Path :Args(0) {
>>>>>> my ( $self, $c ) = @_;
>>>>>>
>>>>>> my $u = $c->req->params->{username};
>>>>>> my $p = $c->req->params->{password};
>>>>>>
>>>>>> if ($u && $p) {
>>>>>> if ($c->authenticate({username => $u, password => $p})) {
>>>>>> $c->res->redirect('Welcome');
>>>>>> }
>>>>>> else {
>>>>>> $c->stash(error_msg => "Bad username or password.");
>>>>>> }
>>>>>> }
>>>>>> else {
>>>>>> $c->stash(error_msg => "Empty username or password.");
>>>>>> }
>>>>>> }
>>>>>>
>>>>>>
>>>>>> Qualquer palpite é bem-vindo!
>>>>>>
>>>>>>
>>>>>> Grato,
>>>>> Hum.. a mensagem deixa bem claro que faltou configurar o realm default.
>>>>>
>>>>> Da uma olhada no primeiro exemplo da documentação do plugin:
>>>>>
>>>>>
>>>>>
>>>>> http://search.cpan.org/~flora/Catalyst-Plugin-Authentication-0.10016/lib/Catalyst/Plugin/Authentication.pm#EXAMPLE
>>>>>
>>>>> Tem também esse ótimo artigo do Wallace Reis no sao-paullo.pm.org:
>>>>>
>>>>> http://sao-paulo.pm.org/artigo/2010/AutenticacaoCatalyst
>>>>>
>>>>> []'s
>>>
>>> Senti falta do Credential e Store na sua configuração.
>>>
>>>
>>> http://search.cpan.org/~flora/Catalyst-Plugin-Authentication-0.10016/lib/Catalyst/Plugin/Authentication.pm#Credential_Verifiers
>>>
>>> []'s
>>>
>>
>> --
>> Ednardo Lobo
>>
>> www.lobo.eti.br
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>
>
>
> Manda o código do teu Schema::UserRole.
>
> Até o inicio da tarde eu consigo dar uma olhada com calma e tento te ajudar.
>
> []'s
--
Ednardo Lobo
www.lobo.eti.br
Mais detalhes sobre a lista de discussão Cascavel-pm