26 |
|
|
27 |
require 'config.pl' if -e 'config.pl'; |
require 'config.pl' if -e 'config.pl'; |
28 |
|
|
29 |
my $dbh = DBI->connect($dsn . $database, $user,$passwd, { RaiseError => 1, AutoCommit => 0 }) || die $DBI::errstr; |
my $dbh = DBI->connect($dsn . $database, $user,$passwd, { RaiseError => 1, AutoCommit => 1 }) || die $DBI::errstr; |
30 |
|
|
31 |
# Net::LDAP::Entry will lc all our attribute names anyway, so |
# Net::LDAP::Entry will lc all our attribute names anyway, so |
32 |
# we don't really care about correctCapitalization for LDAP |
# we don't really care about correctCapitalization for LDAP |
40 |
|
|
41 |
-- SAFEQ specific mappings from UMgr-LDAP.conf |
-- SAFEQ specific mappings from UMgr-LDAP.conf |
42 |
surname as displayName, |
surname as displayName, |
43 |
cardnumber as pager, |
rfid_sid as pager, |
44 |
email as mail, |
email as mail, |
45 |
categorycode as organizationalUnit, |
categorycode as organizationalUnit, |
46 |
borrowernumber as objectGUID, |
borrowernumber as objectGUID, |
54 |
'objectGUID' => 'borrowernumber', |
'objectGUID' => 'borrowernumber', |
55 |
'displayName' => 'surname', |
'displayName' => 'surname', |
56 |
'sn' => 'surname', |
'sn' => 'surname', |
57 |
'pager' => 'cardnumber', |
'pager' => 'rfid_sid', |
58 |
}; |
}; |
59 |
|
|
60 |
# attributes which are same for whole set, but somehow |
# attributes which are same for whole set, but somehow |
148 |
|
|
149 |
@limits = (); |
@limits = (); |
150 |
|
|
151 |
foreach my $filter ( @{ $reqData->{'filter'}->{ $join_with } } ) { |
if ( ref $reqData->{'filter'}->{ $join_with } ) { |
152 |
warn "### filter ",dump($filter),$/; |
|
153 |
foreach my $how ( keys %$filter ) { |
foreach my $filter ( @{ $reqData->{'filter'}->{ $join_with } } ) { |
154 |
if ( $how eq 'or' ) { |
warn "### filter ",dump($filter),$/; |
155 |
__ldap_search_to_sql( %$_ ) foreach ( @{ $filter->{$how} } ); |
foreach my $how ( keys %$filter ) { |
156 |
} else { |
if ( $how eq 'or' ) { |
157 |
__ldap_search_to_sql( $how, $filter->{$how} ); |
__ldap_search_to_sql( %$_ ) foreach ( @{ $filter->{$how} } ); |
158 |
|
} else { |
159 |
|
__ldap_search_to_sql( $how, $filter->{$how} ); |
160 |
|
} |
161 |
|
warn "## limits ",dump(@limits), " values ",dump(@values); |
162 |
} |
} |
|
warn "## limits ",dump(@limits), " values ",dump(@values); |
|
163 |
} |
} |
|
} |
|
164 |
|
|
165 |
$sql_where .= ' ' . join( " $join_with ", @limits ); |
$sql_where .= ' ' . join( " $join_with ", @limits ); |
166 |
|
|
167 |
|
} else { |
168 |
|
__ldap_search_to_sql( $join_with, $reqData->{'filter'}->{$join_with} ); |
169 |
|
} |
170 |
|
|
171 |
} |
} |
172 |
|
|
186 |
|
|
187 |
my $dn = 'uid=' . $row->{uid} || die "no uid"; |
my $dn = 'uid=' . $row->{uid} || die "no uid"; |
188 |
$dn =~ s{[@\.]}{,dc=}g; |
$dn =~ s{[@\.]}{,dc=}g; |
189 |
|
$dn .= ',' . $base unless $dn =~ m{dc}i; |
190 |
|
|
191 |
my $entry = Net::LDAP::Entry->new; |
my $entry = Net::LDAP::Entry->new; |
192 |
$entry->dn( $dn . $base ); |
$entry->dn( $dn ); |
193 |
|
$entry->add( objectClass => [ |
194 |
|
"person", |
195 |
|
"organizationalPerson", |
196 |
|
"inetOrgPerson", |
197 |
|
"hrEduPerson", |
198 |
|
] ); |
199 |
$entry->add( %$row ); |
$entry->add( %$row ); |
200 |
|
|
201 |
#warn "### entry ",dump( $entry ); |
#$entry->changetype( 'modify' ); |
202 |
|
|
203 |
|
warn "### entry ",$entry->dump( \*STDERR ); |
204 |
|
|
205 |
push @entries, $entry; |
push @entries, $entry; |
206 |
} |
} |