--- lib/A3C/LDAP.pm 2008/05/01 16:31:00 105 +++ lib/A3C/LDAP.pm 2008/05/01 17:06:02 106 @@ -6,7 +6,7 @@ use Net::LDAP; use Data::Dump qw/dump/; use base qw(Jifty::Object Class::Accessor::Fast); -our @config_fields = qw( server dn password base ); +our @config_fields = keys %{ Jifty->config->app('LDAP') }; Jifty->log->debug("using fields from configuration: ",dump( @config_fields )); __PACKAGE__->mk_accessors( qw(ldap current_search), @config_fields ); @@ -42,6 +42,17 @@ } } + # configuration sanity testing + foreach ( qw/server dn password base objectClass link/ ) { + die "missing required field $_ in LDAP from etc/config.yaml" unless $args->{$_}; + } + foreach ( qw/person organization/ ) { + die "missing required field $_ in LDAP.objectClass.$_ from etc/config.yaml" unless $args->{objectClass}->{$_}; + } + foreach ( qw/person_filter display_from value_from/ ) { + die "missing required field $_ in LDAP.link.$_ from etc/config.yaml" unless $args->{link}->{$_}; + } + my $ldap = Net::LDAP->new( $args->{server} ) or die "$@"; # an anonymous bind @@ -102,11 +113,11 @@ $self->current_search->count; } -=head2 as_collection_of +=head2 collection my $connection = $ldap->collection( # name of model to use - 'Organization', + $ldap->objectClass->{organization}, # optional params limit => $limit, filter => '(uid=foobar)', @@ -185,7 +196,8 @@ if ( grep(/^\Q$attr\E$/, @columns ) ) { $data->{$attr} = $entry->get_value( $attr ); # } elsif ( $attr !~ m/^(objectClass)$/i ) { -# Jifty->log->warn(ref($model)," doesn't have $attr"); + } else { + Jifty->log->warn(ref($model)," doesn't have $attr"); } }