X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=lib%2FLiCoM%2FPerson.pm;h=4ba1be41aa3c1f887e0b3e8b334926e275f7127b;hb=80c5c31d977378c6430408d696fac14560d838ed;hp=b5c2fdfc58fe5cc1f08e6995c59b1fcddefca125;hpb=58514068dafe37b69bca7d34e5d4bc2e6e234c9a;p=licom.git diff --git a/lib/LiCoM/Person.pm b/lib/LiCoM/Person.pm index b5c2fdf..4ba1be4 100644 --- a/lib/LiCoM/Person.pm +++ b/lib/LiCoM/Person.pm @@ -4,6 +4,7 @@ use strict; use warnings; use LiCoM::Config (qw(get_config)); +use LiCoM::Connection (qw($Ldap)); use Net::LDAP; use Net::LDAP::Filter; @@ -44,10 +45,26 @@ our %ExternalNames = password => 'userPassword' ); -our $Ldap; - 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 @@ -88,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) { @@ -148,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'); @@ -412,8 +431,6 @@ sub name =item I<$obj>-EB ([I<@uri>]) -=item I<$obj>-EB ([I<@groups>]) - Get or set the attribute. This is the same as calling S-EB (I<$field>, I<\@values>)> or S-EB (I<$field>)>. @@ -473,7 +490,7 @@ sub set } if (!defined ($ValidFields{$field})) { - return (undef); + return; } if (defined ($value)) @@ -495,7 +512,10 @@ sub set $entry->update ($Ldap); } - $obj->{$field} = [] unless (defined ($obj->{$field})); + if (!defined ($obj->{$field}) and $ValidFields{$field}) + { + $obj->{$field} = []; + } if (wantarray () and $ValidFields{$field}) {