Compile macros and groups (#595)

This commit is contained in:
Xavier Guimard 2016-04-03 16:27:19 +00:00
parent 41d487ee1f
commit 80f17a91ea
2 changed files with 23 additions and 4 deletions

View File

@ -181,7 +181,26 @@ sub reloadConf {
} }
} }
# TODO: compile macros in _macros, groups in _groups # Compile macros in _macros, groups in _groups
foreach my $type (qw(macros groups)) {
$self->{"_$type"} = {};
if ( $self->conf->{$type} ) {
for my $name ( sort keys %{ $self->conf->{$type} } ) {
my $sub = HANDLER->tsv->{jail}->jail_reval(
"sub{return(" . $self->conf->{$type}->{$name} . ")}" );
if ($sub) {
$self->{"_$type"}->{$name} = $sub;
}
else {
$self->lmLog(
"$type $name returns an error: "
. HANDLER->tsv->{jail}->error,
'error'
);
}
}
}
}
# Load plugins # Load plugins
foreach my $plugin ( $self->enabledPlugins ) { foreach my $plugin ( $self->enabledPlugins ) {

View File

@ -152,7 +152,7 @@ sub setSessionInfo {
$req->{sessionInfo}->{_url} = $req->datas->{urldc}; $req->{sessionInfo}->{_url} = $req->datas->{urldc};
# Share sessionInfo with underlying handler (needed for safe jail) # Share sessionInfo with underlying handler (needed for safe jail)
HANDLER->datas($req->{sessionInfo}); HANDLER->datas( $req->{sessionInfo} );
# Call UserDB setSessionInfo # Call UserDB setSessionInfo
return $self->_userDB->setSessionInfo($req); return $self->_userDB->setSessionInfo($req);
@ -163,7 +163,7 @@ sub setSessionInfo {
sub setMacros { sub setMacros {
my ( $self, $req ) = @_; my ( $self, $req ) = @_;
foreach ( sort keys %{ $self->_macros } ) { foreach ( sort keys %{ $self->_macros } ) {
$req->{sessionInfo}->{$_} = $self->_macros->{$_}->($req); $req->{sessionInfo}->{$_} = $self->_macros->{$_}->();
} }
PE_OK; PE_OK;
} }
@ -202,7 +202,7 @@ sub setPersistentSessionInfo {
sub setLocalGroups { sub setLocalGroups {
my ( $self, $req ) = @_; my ( $self, $req ) = @_;
foreach ( sort keys %{ $self->_groups } ) { foreach ( sort keys %{ $self->_groups } ) {
if ( $self->_groups->{$_}->($req) ) { if ( $self->_groups->{$_}->() ) {
$req->{sessionInfo}->{groups} .= $req->{sessionInfo}->{groups} .=
$self->conf->{multiValuesSeparator} . $_; $self->conf->{multiValuesSeparator} . $_;
$req->{sessionInfo}->{hGroups}->{$_}->{name} = $_; $req->{sessionInfo}->{hGroups}->{$_}->{name} = $_;