X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=lib%2FLiCoM%2FPerson.pm;h=887e39e328c3b95fb4a4916cdf876fac921d2ad6;hb=0179054352dda99fbb817fc140dd0e1b9ea9c99f;hp=a5bf4e2e4c37b8bcae0ca2b6069145be039a07c9;hpb=328bdcb841ecaa72c69379e6ccd7165f44e7c2e4;p=licom.git diff --git a/lib/LiCoM/Person.pm b/lib/LiCoM/Person.pm index a5bf4e2..887e39e 100644 --- a/lib/LiCoM/Person.pm +++ b/lib/LiCoM/Person.pm @@ -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,8 +105,9 @@ sub create my %hash = @_; my $entry = Net::LDAP::Entry->new (); my $dn; + my $ou; - $entry->add (objectClass => [qw(top organizationalUnit person organizationalPerson inetOrgPerson)]); + $entry->add (objectClass => [qw(person organizationalPerson inetOrgPerson)]); for (keys %hash) { @@ -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');