Lo que se pretende es que si una persona ($entry que es el parámetro de entrada) es "Trading" (un tipo de empleado), la función devuelva true:
Using perl Syntax Highlighting
sub userHasVariance($)
{
my ($entry) = @_;
my %variances;
my $key;
my (@attrValues,@varValues);
my ($attrValue,$varValue);
my $attrVar;
my $configVar;
my $configValue;
my (@userAttrValues,$userConfigValue,$userAttrValue);
my $thisValueFound = FALSE;
# get all of the variances
%variances = &getConfigFile('variance');
# look through all of the variances
foreach $configVar (keys %variances) {
$userConfigValue = $entry->get_value("$configVar");
foreach $configValue (keys %{$variances{$configVar}}) {
# is this user in the group of users we want to check?
if ($userConfigValue =~ /$configValue/i) {
#which attribute are we basing the variance on
$attrVar = $variances{$configVar}{$configValue}{attr};
$attrValue = $variances{$configVar}{$configValue}{value};
# get the users attributes
@userAttrValues = $entry->get_value("$attrVar");
# check each of the values to see if it is in the list
foreach $userAttrValue (@userAttrValues) {
if ($attrValue =~ /,$userAttrValue,/i) {
$thisValueFound = TRUE;
} elsif ($attrValue =~ /^$userAttrValue,/i) {
$thisValueFound = TRUE;
} elsif ($attrValue =~ /,$userAttrValue$/i) {
$thisValueFound = TRUE;
} elsif ($attrValue =~ /^$userAttrValue$/i) {
$thisValueFound = TRUE;
} else { # not found user does not have a variance
return FALSE;
}
}
# if user has nono of these attributes return FALSE (default setting)
# or the user has all of them, then return TRUE;
return $thisValueFound;
}
}
# user not in these "Groups"
return FALSE;
}
# no variances found
return FALSE;
}
{
my ($entry) = @_;
my %variances;
my $key;
my (@attrValues,@varValues);
my ($attrValue,$varValue);
my $attrVar;
my $configVar;
my $configValue;
my (@userAttrValues,$userConfigValue,$userAttrValue);
my $thisValueFound = FALSE;
# get all of the variances
%variances = &getConfigFile('variance');
# look through all of the variances
foreach $configVar (keys %variances) {
$userConfigValue = $entry->get_value("$configVar");
foreach $configValue (keys %{$variances{$configVar}}) {
# is this user in the group of users we want to check?
if ($userConfigValue =~ /$configValue/i) {
#which attribute are we basing the variance on
$attrVar = $variances{$configVar}{$configValue}{attr};
$attrValue = $variances{$configVar}{$configValue}{value};
# get the users attributes
@userAttrValues = $entry->get_value("$attrVar");
# check each of the values to see if it is in the list
foreach $userAttrValue (@userAttrValues) {
if ($attrValue =~ /,$userAttrValue,/i) {
$thisValueFound = TRUE;
} elsif ($attrValue =~ /^$userAttrValue,/i) {
$thisValueFound = TRUE;
} elsif ($attrValue =~ /,$userAttrValue$/i) {
$thisValueFound = TRUE;
} elsif ($attrValue =~ /^$userAttrValue$/i) {
$thisValueFound = TRUE;
} else { # not found user does not have a variance
return FALSE;
}
}
# if user has nono of these attributes return FALSE (default setting)
# or the user has all of them, then return TRUE;
return $thisValueFound;
}
}
# user not in these "Groups"
return FALSE;
}
# no variances found
return FALSE;
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
El archivo de configuración es el siguiente:
- Código: Seleccionar todo
variance:collectiveParentRDN:Trading:applications:38
ColectiveParentRDN es por ejemplo ou=Trading Partners,o=Com.
Este es el caso que la función debería ser cierta y también, cuando el usuario tiene en el atributo applications el valor 38... lo que ahora sucede es que en donde se usa la función, que es un if... nunca se entra... ¡¡y no puedo sacar por qué!! ¡porqué este código es demasiado complejo! =(
Espero que no falten datos...
¡Mil gracias!
Stefania.