Apply group filter on mod_vcard_ldap

This commit is contained in:
Daniel Berteaud 2013-04-04 20:31:38 +02:00
parent e4b10dace7
commit 2087fbfc19
2 changed files with 15 additions and 7 deletions

View File

@ -17,16 +17,16 @@ HERE
# (Only available on iPasserelle)
our @groups = split(/[;,]/, ($ejabberd{'AllowedGroups'} || ''));
my $filter = '';
our $groupFilter = '';
if (scalar(@groups) == 1){
$filter = "(posixMemberOf=$groups[0])";
$groupFilter = "(posixMemberOf=$groups[0])";
}
elsif (scalar(@groups) gt 1){
$filter = '(|';
$filter .= "(posixMemberOf=$_)" foreach (@groups);
$filter .= ')';
$groupFilter = '(|';
$groupFilter .= "(posixMemberOf=$_)" foreach (@groups);
$groupFilter .= ')';
}
$OUT .= ($filter eq '') ? '' : '{ldap_filter, "' . $filter . '"}.';
$OUT .= ($groupFilter eq '') ? '' : '{ldap_filter, "' . $groupFilter . '"}.';
}

View File

@ -1,9 +1,17 @@
{
my $filter = '';
if (scalar(@groups) ge 1){
$filter = "(&(objectClass=inetOrgPerson)$groupFilter)";
}
else{
$filter = "(objectClass=inetOrgPerson)";
}
$OUT .=<<"HERE";
,{mod_vcard_ldap, [
{ldap_base, "ou=Users,$base"},
{ldap_filter, "(objectClass=inetOrgPerson)"},
{ldap_filter, "$filter"},
{ldap_vcard_map,
%% vcard patterns
[{"NICKNAME", "%u", []}, % just use user's part of JID as his nickname