[Catalyst] source out accessors to LDAP-Model
piccard
piccard at web.de
Mon Dec 13 14:24:58 GMT 2010
Hello,
I'm very new to Catalyst, so at the moment I am playing around with some
things. I think I've got a very basic question:
I'm not sure how to pull out more complicated queries from the
controller by providing subroutines/accessors.
I created a LDAP-Model and sourced out the connection-parameters to
myapp.config
<Model::Person>
base ou=TSM,ou=ABC,o=fffff,c=de
password extremlysecret
<start_tls_options>
verify none
</start_tls_options>
port 1111
start_tls 0
dn cn=readproxytsm,ou=services,o=ffff,c=de
host ldaps://ldapauth.ffff.de
</Model::Person>
Then I tested it by a controller query, which works very well:
# Then, in your controller
my $mesg = $c->model('Person')->search('(uid=lu21rue)');
my @entries = $mesg->entries;
$c->stash({
template => 'books/person.tt',
person_uri => $entries[0]->uid,
person => $entries[0],
});
But I don't wanna pollute my controllers, so I wanted to source out
complicated queries in special classes which should provide accessors.
So I extended the Model-class to use an adaptor:
package ldap::Model::Person;
use strict;
use warnings;
use base qw/Catalyst::Model::LDAP/;
use parent 'Catalyst::Model::Adaptor';
__PACKAGE__->config(
class => 'ldap::Model::Person::Utils',
args => {}
);
package ldap::Model::Person::Utils;
use Moose;
use namespace::clean -except => 'meta';
extends 'Catalyst::Model::LDAP';
sub getPerson {
my ($self, $person) = @_;
my $mesg = $self->search('(uid='.$person.')');
my @entries = $mesg->entries;
return @entries;
}
__PACKAGE__->meta->make_immutable;
But that's defnitly the wrong way, 'cause $c->model('Person') from the
controller returns a Catalyst::Model::LDAP::Connection reference.
What's the right way to pull out these queries from the controller and
store them in their own classes?
Thank u in advnace :-D
More information about the Catalyst
mailing list