Foo
[licom.git] / lib / LiCoM / Person.pm
index a5bf4e2..20a6690 100644 (file)
@@ -47,6 +47,24 @@ our %ExternalNames =
 
 return (1);
 
+sub new
+{
+       my $pkg = shift;
+       my $entry = shift;
+       my $obj = {};
+
+       $obj->{'dn'} = $entry->dn ();
+       $obj->{'ldap'} = $entry;
+
+       for (keys %ValidFields)
+       {
+               my $key = $_;
+               $obj->{$key} = $entry->get_value ($key, asref => $ValidFields{$key});
+       }
+
+       return (bless ($obj, $pkg));
+}
+
 =head1 STATIC FUNCTIONS
 
 =over 4
@@ -87,6 +105,7 @@ sub create
        my %hash = @_;
        my $entry = Net::LDAP::Entry->new ();
        my $dn;
+       my $ou;
 
        $entry->add (objectClass => [qw(top organizationalUnit person organizationalPerson inetOrgPerson)]);
 
@@ -147,8 +166,9 @@ sub create
        }
 
        $dn = "cn=$sn $gn," . get_config ('base_dn');
+       ($ou) = get_config ('base_dn') =~ m/\bou\s*=\s*([^,]+)/i;
        
-       $entry->add (cn => "$sn $gn");
+       $entry->add (cn => "$sn $gn", ou => $ou);
        $entry->dn ($dn);
 
        $entry->changetype ('add');