simplify filter_groups

This commit is contained in:
Dietmar Maurer 2012-01-23 09:58:03 +01:00
parent 37d45debb1
commit b9180ed235
3 changed files with 6 additions and 5 deletions

View File

@ -248,7 +248,7 @@ __PACKAGE__->register_method ({
my $privs = [ 'Sys.UserMod', 'Sys.UserAdd' ];
if (!$rpcenv->check_any($authuser, "/access", $privs, 1)) {
my $groups = $rpcenv->filter_groups($authuser, sub { return "/access/groups/" . shift; }, $privs, 1);
my $groups = $rpcenv->filter_groups($authuser, $privs, 1);
my $allowed_users = $rpcenv->group_member_join([keys %$groups]);
raise_perm_exc() if !$allowed_users->{$userid};
}

View File

@ -70,7 +70,7 @@ __PACKAGE__->register_method ({
my $privs = [ 'Sys.UserMod', 'Sys.UserAdd' ];
my $canUserMod = $rpcenv->check_any($authuser, "/access", $privs, 1);
my $groups = $rpcenv->filter_groups($authuser, sub { return "/access/groups/" . shift; }, $privs, 1);
my $groups = $rpcenv->filter_groups($authuser, $privs, 1);
my $allowed_users = $rpcenv->group_member_join([keys %$groups]);
foreach my $user (keys %{$usercfg->{users}}) {

View File

@ -216,18 +216,19 @@ sub is_group_member {
}
sub filter_groups {
my ($self, $user, $getPath, $privs, $any) = @_;
my ($self, $user, $privs, $any) = @_;
my $cfg = $self->{user_cfg};
my $groups = {};
foreach my $group (keys %{$cfg->{groups}}) {
my $path = "/access/groups/$group";
if ($any) {
if ($self->check_any($user, &$getPath($group), $privs, 1)) {
if ($self->check_any($user, $path, $privs, 1)) {
$groups->{$group} = $cfg->{groups}->{$group};
}
} else {
if ($self->check($user, &$getPath($group), $privs, 1)) {
if ($self->check($user, $path, $privs, 1)) {
$groups->{$group} = $cfg->{groups}->{$group};
}
}