Changeset 445
- Timestamp:
- 09/09/09 08:32:30 (15 years ago)
- Location:
- LATMOS-Accounts
- Files:
-
- 1 added
- 3 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ldap/Onlyaddress.pm
r441 r445 1 package LATMOS::Accounts::Bases::Ldap:: User;1 package LATMOS::Accounts::Bases::Ldap::Onlyaddress; 2 2 3 3 use 5.010000; … … 37 37 =cut 38 38 39 sub _class_filter { '(&(ObjectClass= posixAccount))' }39 sub _class_filter { '(&(ObjectClass=inetOrgPerson))' } 40 40 41 41 sub _key_attr { 'cn' } … … 45 45 inetOrgPerson 46 46 organizationalPerson 47 posixAccount48 shadowAccount49 47 ) } 50 48 … … 57 55 my ($self, $base, $mode) = @_; 58 56 ( 59 qw(displayName givenName homePhone homePostalAddress57 qw(displayName givenName 60 58 initials mail sn 61 mobile o uid manager facsimileTelephoneNumber), # inetOrgPerson 62 qw(cn uidNumber gidNumber homeDirectory 63 userPassword loginShell 64 gecos description), # posixAccount 65 qw(shadowLastChange 66 shadowMin shadowMax 67 shadowWarning 68 shadowInactive 69 shadowExpire 70 shadowFlag), # shadowAccount 59 mobile o uid facsimileTelephoneNumber), # inetOrgPerson 71 60 qw(street postOfficeBox postalCode postalAddress streetAddress 72 61 physicalDeliveryOfficeName ou st l telephoneNumber), # organizationalPerson … … 101 90 return 0; 102 91 } 103 return 1; ;92 return 1; 104 93 } 105 94 … … 108 97 109 98 $field eq 'streetAddress' and $field = 'street'; 110 $field eq 'memberOf' and do {111 my @res;112 $self->base->_unlimited_search(113 base => $self->base->object_base_dn('group'),114 filter => sprintf(115 '(&(objectClass=group)(member=%s))',116 escape_filter_value($self->{entry}->dn),117 ),118 callback => sub {119 my ($mesg, $entry) = @_;120 ref $entry eq 'Net::LDAP::Entry' or return;121 push(@res, $entry->get_value('cn'));122 },123 );124 return [ sort(@res) ];125 };126 $field eq 'manager' and do {127 my $dn = $self->SUPER::get_field($field) or return;128 return $self->base->_get_object_from_dn($dn)->get_value('cn');129 };130 99 $self->SUPER::get_field($field); 131 100 } … … 136 105 for ($f) { 137 106 /^sn$/ and $val ||= $entry->get_value('cn'); 138 /^memberOf$/ and do {139 my %users;140 $users{$_}{e} = 1 foreach (ref $self141 ? $self->get_attribute('memberOf')142 : ());143 $users{$_}{n} = 1 foreach (@{ $val || []});144 foreach (keys %users) {145 $users{$_}{e} && $users{$_}{n} and next;146 my $group = $base->get_object('group', $_) or next;147 if ($users{$_}{e}) {148 $group->{entry}->delete(member => $entry->get_vaue('dn'));149 } elsif ($users{$_}{n}) {150 $group->{entry}->add(member => $entry->get_value('dn'));151 } # else {} # can't happen152 my $mesg = $group->{entry}->update($base->ldap);153 if ($mesg->code) {154 $base->log(LA_ERR, "Cannot set attributes: %s", $mesg->error);155 return;156 }157 }158 next;159 };160 /^userPassword$/ and do {161 # openldap use prefix to identify encryption passwd162 # {CRYPT} is system dependant, eg use crypt from system163 # As we run openldap on UNIX, this should not be a problem164 # as we use perl crypt() which does the same165 # This code will have to be changed if we use openldap on other UNIX166 $val = '{CRYPT}' . $val;167 next;168 };169 /^manager$/ && $val and do {170 my $user = $base->get_object('user', $val) or171 next;172 $val = $user->get_field('dn');173 next;174 };175 107 } 176 108 $self->SUPER::_populate_entry($entry, $f, $val, $base); … … 195 127 at your option, any later version of Perl 5 you may have available. 196 128 197 198 129 =cut -
LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Ldap/User.pm
r444 r445 101 101 return 0; 102 102 } 103 return 1; ;103 return 1; 104 104 } 105 105 -
LATMOS-Accounts/t/12_bases_sql.t
r306 r445 1 1 use strict; 2 2 use warnings; 3 use Test::More tests => 9;3 use Test::More tests => 10; 4 4 5 5 use_ok('LATMOS::Accounts::Bases'); … … 12 12 use_ok('LATMOS::Accounts::Bases::Sql::Revaliases'); 13 13 use_ok('LATMOS::Accounts::Bases::Sql::Address'); 14 use_ok('LATMOS::Accounts::Bases::Sql::Onlyaddress'); 14 15 -
LATMOS-Accounts/t/13_bases_ldap.t
r290 r445 1 1 use strict; 2 2 use warnings; 3 use Test::More tests => 5;3 use Test::More tests => 6; 4 4 5 5 use_ok('LATMOS::Accounts::Bases'); … … 8 8 use_ok('LATMOS::Accounts::Bases::Ldap::User'); 9 9 use_ok('LATMOS::Accounts::Bases::Ldap::Group'); 10 use_ok('LATMOS::Accounts::Bases::Ldap::Onlyaddress'); 10 11
Note: See TracChangeset
for help on using the changeset viewer.