}
sub lookup_username {
- my ($username) = @_;
+ my ($username, $noerr) = @_;
$username =~ m!^(${PVE::Auth::Plugin::user_regex})\@(${PVE::Auth::Plugin::realm_regex})$!;
my @matches = grep { lc $username eq lc $_ } (keys %{$usercfg->{users}});
die "ambiguous case insensitive match of username '$username', cannot safely grant access!\n"
- if scalar @matches > 1;
+ if scalar @matches > 1 && !$noerr;
return $matches[0]
}
return $path;
}
+sub check_path {
+ my ($path) = @_;
+ return $path =~ m!^(
+ /
+ |/access
+ |/access/groups
+ |/access/realm
+ |/nodes
+ |/nodes/[[:alnum:]\.\-\_]+
+ |/pool
+ |/pool/[[:alnum:]\.\-\_]+
+ |/sdn
+ |/storage
+ |/storage/[[:alnum:]\.\-\_]+
+ |/vms
+ |/vms/[1-9][0-9]{2,}
+ )$!xs;
+}
+
PVE::JSONSchema::register_format('pve-groupid', \&verify_groupname);
sub verify_groupname {
my ($groupname, $noerr) = @_;