[Catalyst] using LDAP-Model externally

piccard piccard at web.de
Wed Mar 2 12:36:20 GMT 2011


Hello,

I have problem with LDAP-Models, which I wanna access from outside.
When I use the LDAP-Model from a Controller I get all attributes I was 
querying for, means everything works fine :-)

# inside a Controller
my $mesg = $c->model('SimAuth')->getPerson('lu21rup');
$c->log->debug("\$LDAP-mesg: ".Dumper($mesg));

My LDAP-Model uses a Connection- & an Entry-Class, which are defined in 
the config:

   1 <Model::SimAuth>
   2         base   ou=ccc,ou=bbb,o=aaa,c=de
   3         password   xxx
   4 <start_tls_options>
   5                 verify   none
   6 </start_tls_options>
   7         port        50636
   8         start_tls   0
   9         dn   cn=ttt,ou=ddd,o=aaa,c=de
  10         host   ldaps://hostname.bla.de
  11         entry_class DW::Model::SimAuth::Entry
  12         connection_class    DW::Model::SimAuth::Connection
  13 </Model::SimAuth>


here are the 2 example-classes

   1 package DW::Model::SimAuth::Connection;
   2
   3 use strict;
   4 use warnings;
   5
   6 use Moose;
   7 use MooseX::NonMoose;
   8 use namespace::autoclean;
   9
  10 extends qw/Catalyst::Model::LDAP::Connection/;
  11
  12
  13 sub getPerson {
  14         my ($self, $person) = @_;
  15
  16         my $mesg = $self->search("(cn=".$person.")");
  17         return  $mesg;
  18 }
  19
  20 __PACKAGE__->meta->make_immutable;
  21
  22 1;



   1 package DW::Model::SimAuth::Entry;
   2
   3 use strict;
   4 use warnings;
   5
   6 use Moose;
   7 use MooseX::NonMoose;
   8 use namespace::autoclean;
   9
  10
  11 extends qw/Catalyst::Model::LDAP::Entry/;
  12
  13 sub getEntry {
  14         my ($self, $attribute) = @_;
  15
  16         return $self->get_value($attribute);
  17 }
  18
  19 __PACKAGE__->meta->make_immutable;
  20
  21 1;


... but when I try to access the model from the outside I just get a 
view attributes, not all???!?
This means I can establish the connection externally but I think my 
script is definitely wrong.
I use Config::JFDI for accessing the config from the outside (I have 
multiconfig enabled).

#!/usr/bin/perl

use strict;
use warnings;

use lib ('lib') ;
use Config::JFDI;
use DW::Model::SimAuth::Connection;
use DW::Model::SimAuth::Entry;
use Data::Dumper;


my $config = Config::JFDI->new(
         name => "DW",
         path => "../DW/conf",
         driver => {
                  'General' => { -UseApacheInclude => 1 }
         }
);

my $config_hash = $config->get;
print Dumper $config_hash;

my $ldap = 
$config_hash->{'Model::SimAuth'}->{'connection_class'}->new(%{$connect_info});

# query LDAP
my $mesg = $ldap->search(
         filter=>"&(cn=lu21rup)",
         scope  => 'sub',
         attrs  =>['*'],
);


my @entries = $mesg->entries;
foreach my $entry (@entries) {
         $entry->dump;
}


I think my failure is when I wanna get an instance of the connection-class:
my $ldap = 
$config_hash->{'Model::SimAuth'}->{'connection_class'}->new(%{$connect_info});

Can anybody help me?
thanx :-D










More information about the Catalyst mailing list