[Catalyst] Reaction Authentication

Guillermo Roditi groditi at gmail.com
Mon Jan 29 13:52:14 GMT 2007


Role's don't do augment. I'll look further into this though

On 1/29/07, Jonas Alves <jonas.alves at gmail.com> wrote:
>
>
>
> On 28/01/07, Guillermo Roditi <groditi at gmail.com> wrote:
> > FIXED IT!!!
> >
> > take out the does '...' line and replace it with this:
> >
> > override parameter_hashref => sub{
> >     my $self = shift;
> >     my $args = super();
> >     $args->{password} = delete $args->{new_password};
> >     delete $args->{confirm_new_password};
> >     return $args;
> > };
> >
> >
> > here's my class:
> >
> > package Prefab::Model::Action::CreateUser;
> >
> > use strict;
> > use warnings;
> >
> > use Reaction::Class;
> > use aliased
> 'Reaction::InterfaceModel::Action::DBIC::ActionReflector';
> >
> > extends qw(
> >
> Reaction::InterfaceModel::Action::User::SetPassword
> >
> Reaction::InterfaceModel::Action::DBIC::ResultSet::Create
> >           );
> >
> > my $r = ActionReflector->new;
> > $r->reflect_attrs('Prefab::Schema::User'  =>
> __PACKAGE__,
> >                   qw/id username created_d role_list/);
> >
> > override parameter_hashref => sub{
> >     my $self = shift;
> >     my $args = super();
> >     $args->{password} = delete $args->{new_password};
> >     delete $args->{confirm_new_password};
> >     return $args;
> > };
> >
> > 1;
> >
> >
> >
> > If you want to reflect fields like i did then add this method to
> > action reflector:
> >
> >   implements reflect_attrs => as {
> >     my ($self, $from_class, $to_class, @attrs) = @_;
> >     foreach my $attr_name (@attrs) {
> >       $self->reflect_attribute_to($from_class,
> >
> $from_class->meta->get_attribute($attr_name),
> >                                   $to_class);
> >     }
> >   };
>
> Cool, I like that reflect_attrs method, I'm already using it.
> I have tried your aproach before. You can't delete the 'new_password' and
> 'confirm_new_password' or the confirm_password is not checked against
> 'new_password'.
> You have to live with the warnings in the error log.
> But it doesn't work for me either. The problem is that
> Reaction::InterfaceModel::Action::User::SetPassword and
> Reaction::InterfaceModel::Action::DBIC::Role::CheckUniques
> both override 'error_for_attribute' and 'can_apply'. So if you have unique
> constraints in your schema they don't get evaluated if your class extends
> from User::SetPassword before ResultSet::Create
> or if you reverse the order then your confirm password is not checked. I
> tried to change the methods from override to augment and the super() call to
> an inner() call but i got following error:
> Moose::Role cannot support 'augment' at
> /usr/local/share/perl/5.8.7/Moose/Role.pm line 138
>
> So i don't know how to fix this.
>
> --
> Jonas
>
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo:
> http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive:
> http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/
>
>
>



More information about the Catalyst mailing list