-
- if ($archive) {
- my $size = 0;
- my $filename = "/var/log/pve/tasks/index";
- eval {
- my $fh = IO::File->new($filename, '>>', 0644) ||
- die "unable to open file '$filename' - $!\n";
- PVE::Tools::safe_print($filename, $fh, $archive);
- $size = -s $fh;
- close($fh) ||
- die "unable to close file '$filename' - $!\n";
- };
- my $err = $@;
- if ($err) {
- syslog('err', $err);
- foreach my $task (@arlist) { # mark as not saved
- $task->{saved} = 0;
+ my $path = PVE::Tools::template_replace($tmplpath, $param);
+ $path = PVE::AccessControl::normalize_path($path);
+ return $self->check_full($username, $path, $privs, $any, $noerr);
+ } elsif ($test eq 'userid-group') {
+ my $userid = $param->{userid};
+ my ($t, $privs, %options) = @$check;
+ return 0 if !$options{groups_param} && !$self->check_user_exist($userid, $noerr);
+ if (!$self->check_any($username, "/access/groups", $privs, 1)) {
+ my $groups = $self->filter_groups($username, $privs, 1);
+ if ($options{groups_param}) {
+ my @group_param = PVE::Tools::split_list($param->{groups});
+ raise_perm_exc("/access/groups, " . join("|", @$privs)) if !scalar(@group_param);
+ foreach my $pg (@group_param) {
+ raise_perm_exc("/access/groups/$pg, " . join("|", @$privs))
+ if !$groups->{$pg};
+ }
+ } else {
+ my $allowed_users = $self->group_member_join([keys %$groups]);
+ if (!$allowed_users->{$userid}) {
+ return 0 if $noerr;
+ raise_perm_exc();