mirror of
https://git.proxmox.com/git/pve-access-control
synced 2025-06-08 06:23:03 +00:00
simplify filter_groups
This commit is contained in:
parent
37d45debb1
commit
b9180ed235
@ -248,7 +248,7 @@ __PACKAGE__->register_method ({
|
|||||||
|
|
||||||
my $privs = [ 'Sys.UserMod', 'Sys.UserAdd' ];
|
my $privs = [ 'Sys.UserMod', 'Sys.UserAdd' ];
|
||||||
if (!$rpcenv->check_any($authuser, "/access", $privs, 1)) {
|
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]);
|
my $allowed_users = $rpcenv->group_member_join([keys %$groups]);
|
||||||
raise_perm_exc() if !$allowed_users->{$userid};
|
raise_perm_exc() if !$allowed_users->{$userid};
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ __PACKAGE__->register_method ({
|
|||||||
my $privs = [ 'Sys.UserMod', 'Sys.UserAdd' ];
|
my $privs = [ 'Sys.UserMod', 'Sys.UserAdd' ];
|
||||||
|
|
||||||
my $canUserMod = $rpcenv->check_any($authuser, "/access", $privs, 1);
|
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]);
|
my $allowed_users = $rpcenv->group_member_join([keys %$groups]);
|
||||||
|
|
||||||
foreach my $user (keys %{$usercfg->{users}}) {
|
foreach my $user (keys %{$usercfg->{users}}) {
|
||||||
|
@ -216,18 +216,19 @@ sub is_group_member {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub filter_groups {
|
sub filter_groups {
|
||||||
my ($self, $user, $getPath, $privs, $any) = @_;
|
my ($self, $user, $privs, $any) = @_;
|
||||||
|
|
||||||
my $cfg = $self->{user_cfg};
|
my $cfg = $self->{user_cfg};
|
||||||
|
|
||||||
my $groups = {};
|
my $groups = {};
|
||||||
foreach my $group (keys %{$cfg->{groups}}) {
|
foreach my $group (keys %{$cfg->{groups}}) {
|
||||||
|
my $path = "/access/groups/$group";
|
||||||
if ($any) {
|
if ($any) {
|
||||||
if ($self->check_any($user, &$getPath($group), $privs, 1)) {
|
if ($self->check_any($user, $path, $privs, 1)) {
|
||||||
$groups->{$group} = $cfg->{groups}->{$group};
|
$groups->{$group} = $cfg->{groups}->{$group};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($self->check($user, &$getPath($group), $privs, 1)) {
|
if ($self->check($user, $path, $privs, 1)) {
|
||||||
$groups->{$group} = $cfg->{groups}->{$group};
|
$groups->{$group} = $cfg->{groups}->{$group};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user