Continuation of commit r2833 (#596)

so that a group rule may involve another, previously computed group
This commit is contained in:
François-Xavier Deltombe 2013-05-21 09:34:01 +00:00
parent 3909d708d1
commit 3c81802f3c

View File

@ -2061,8 +2061,9 @@ sub setSessionInfo {
#@return Lemonldap::NG::Portal constant #@return Lemonldap::NG::Portal constant
sub setMacros { sub setMacros {
my $self = shift; my $self = shift;
foreach (sort keys %{ $self->{macros} }) { foreach ( sort keys %{ $self->{macros} } ) {
$self->{sessionInfo}->{$_} = $self->safe->reval( $self->{macros}->{$_} ); $self->{sessionInfo}->{$_} =
$self->safe->reval( $self->{macros}->{$_} );
} }
PE_OK; PE_OK;
} }
@ -2072,27 +2073,16 @@ sub setMacros {
# * store all groups name that the user match in $self->{sessionInfo}->{groups} # * store all groups name that the user match in $self->{sessionInfo}->{groups}
#@return Lemonldap::NG::Portal constant #@return Lemonldap::NG::Portal constant
sub setLocalGroups { sub setLocalGroups {
my $self = shift; my $self = shift;
my $groups = ""; foreach ( sort keys %{ $self->{groups} } ) {
foreach (sort keys %{ $self->{groups} } ) { $self->{sessionInfo}->{groups} .= $self->{multiValuesSeparator} . $_
$groups .= $_ . $self->{multiValuesSeparator}
if ( $self->safe->reval( $self->{groups}->{$_} ) ); if ( $self->safe->reval( $self->{groups}->{$_} ) );
} }
# Clear values separator at the beginning
# Join local and UserDB groups
if ($groups) {
$self->{sessionInfo}->{groups} .=
$self->{multiValuesSeparator} . $groups;
}
# Clear values separator at begin or end
if ( $self->{sessionInfo}->{groups} ) { if ( $self->{sessionInfo}->{groups} ) {
$self->{sessionInfo}->{groups} =~ $self->{sessionInfo}->{groups} =~
s/^\Q$self->{multiValuesSeparator}\E//; s/^\Q$self->{multiValuesSeparator}\E//;
$self->{sessionInfo}->{groups} =~
s/\Q$self->{multiValuesSeparator}\E$//;
} }
PE_OK; PE_OK;
} }