Changed config handling. More fixes needed..
[licom.git] / lib / LiCoM / Group.pm
index f7bd00d..e948926 100644 (file)
@@ -3,6 +3,7 @@ package LiCoM::Group;
 use strict;
 use warnings;
 
+use LiCoM::Config (qw(get_config));
 use LiCoM::Connection (qw($Ldap));
 use Net::LDAP;
 use Net::LDAP::Filter;
@@ -41,12 +42,12 @@ sub load
 {
        my $pkg = shift;
        my $name = shift;
-       my $member_dn = 'cn=' . $name . ',' . $Config{'base_dn'};
+       my $member_dn = _cn_to_dn ($name);
        my @retval = ();
 
        my $mesg = $Ldap->search
        (
-               base    => $Config{'base_dn'},
+               base    => get_config ('base_dn'),
                filter  => "(&(objectClass=groupOfNames)(|(cn=$name)(member=$member_dn)))"
        );
 
@@ -78,7 +79,7 @@ sub create ($$$@)
        my $name = shift;
        my $desc = shift;
        my @members = @_;
-       my $dn = "cn=$name," . $Config{'base_dn'};
+       my $dn = _cn_to_dn ($name);
 
        my $entry = Net::LDAP::Entry->new ();
 
@@ -113,7 +114,7 @@ sub all
 
        my $mesg = $Ldap->search
        (
-               base    => $Config{'base_dn'},
+               base    => get_config ('base_dn'),
                filter  => "(objectClass=groupOfNames)"
        );
 
@@ -222,17 +223,6 @@ sub del_members
        }
 }
 
-sub _update_members
-{
-       my $obj = shift;
-       my $entry = $obj->{'ldap'};
-       my @tmp = map { 'cn=' . $_ . ',' . $Config{'base_dn'} } (@{$obj->{'members'}});
-
-       $entry->changetype ('modify');
-       $entry->replace (member => \@tmp);
-       $entry->update ($Ldap);
-}
-
 =item I<$obj>-E<gt>B<name> ([I<$name>])
 
 Sets the name if given. Returns the (new) name.
@@ -251,7 +241,7 @@ sub name
                $entry->changetype ('modify');
                $entry->replace (cn => $obj->{'name'});
                $entry->update ($Ldap);
-               $entry->dn ('cn=' . $obj->{'name'} . ',' . $Config{'base_dn'});
+               $entry->dn (_cn_to_dn ($obj->{'name'}));
                $entry->update ($Ldap);
        }
 
@@ -281,6 +271,24 @@ sub description
        return ($obj->{'description'});
 }
 
+sub _cn_to_dn
+{
+       my $cn = shift;
+       my $base_dn = get_config ('base_dn') or die;
+
+       return ('cn=' . $cn . ',' . $base_dn);
+}
+
+sub _update_members
+{
+       my $obj = shift;
+       my $entry = $obj->{'ldap'};
+       my @tmp = map { _cn_to_dn ($_); } (@{$obj->{'members'}});
+
+       $entry->changetype ('modify');
+       $entry->replace (member => \@tmp);
+       $entry->update ($Ldap);
+}
 
 =back