version 1.1457, 2021/06/06 23:18:59
|
version 1.1460, 2021/06/15 20:52:28
|
Line 8441 sub allowed {
|
Line 8441 sub allowed {
|
=~/\Q$priv\E\&([^\:]*)/) { |
=~/\Q$priv\E\&([^\:]*)/) { |
my $value = $1; |
my $value = $1; |
if ($priv eq 'bre') { |
if ($priv eq 'bre') { |
if ($noblockcheck) { |
my $deeplinkblock = &deeplink_check($priv,$symb,$uri); |
|
if ($deeplinkblock) { |
|
$thisallowed = 'D'; |
|
} elsif ($noblockcheck) { |
$thisallowed.=$value; |
$thisallowed.=$value; |
} else { |
} else { |
my @blockers = &has_comm_blocking($priv,$symb,$uri,$ignorecache); |
my @blockers = &has_comm_blocking($priv,$symb,$uri,$ignorecache); |
Line 9062 sub deeplink_check {
|
Line 9065 sub deeplink_check {
|
if ($symb eq $login) { |
if ($symb eq $login) { |
$allow = 1; |
$allow = 1; |
} |
} |
} elsif ($scope eq 'map') { |
} elsif (($scope eq 'map') || ($scope eq 'rec')) { |
#FIXME Compare map for $env{'request.deeplink.login'} with map for $symb |
my ($map_from_symb) = &deversion((&decode_symb($symb))[0]); |
} elsif ($scope eq 'rec') { |
my ($map_from_login) = &deversion((&decode_symb($login))[0]); |
#FIXME Recurse up for $env{'request.deeplink.login'} with map for $symb |
if (($map_from_symb) && ($map_from_login)) { |
|
if ($map_from_symb eq $map_from_login) { |
|
$allow = 1; |
|
} elsif ($scope eq 'rec') { |
|
my @recurseup = &get_map_hierarchy($map_from_symb,$env{'request.course.id'}); |
|
if (grep(/^\Q$map_from_login\E$/,@recurseup)) { |
|
$allow = 1; |
|
} |
|
} |
|
} |
} |
} |
} else { |
} else { |
my ($acctype,$item) = split(/:/,$access); |
my ($acctype,$item) = split(/:/,$access); |
Line 9776 sub auto_validate_class_sec {
|
Line 9788 sub auto_validate_class_sec {
|
return $response; |
return $response; |
} |
} |
|
|
|
sub auto_instsec_reformat { |
|
my ($cdom,$action,$instsecref) = @_; |
|
return unless(($action eq 'clutter') || ($action eq 'declutter')); |
|
my @homeservers; |
|
if (defined(&domain($cdom,'primary'))) { |
|
push(@homeservers,&domain($cdom,'primary')); |
|
} else { |
|
my %servers = &get_servers($cdom,'library'); |
|
foreach my $tryserver (keys(%servers)) { |
|
if (!grep(/^\Q$tryserver\E$/,@homeservers)) { |
|
push(@homeservers,$tryserver); |
|
} |
|
} |
|
} |
|
my $response; |
|
my %reformatted = %{$instsecref}; |
|
foreach my $server (@homeservers) { |
|
if (ref($instsecref) eq 'HASH') { |
|
my $info = &freeze_escape($instsecref); |
|
my $response=&reply('autoinstsecreformat:'.$cdom.':'. |
|
$action.':'.$info,$server); |
|
next if ($response =~ /(con_lost|error|no_such_host|refused|unknown_command)/); |
|
my @items = split(/&/,$response); |
|
foreach my $item (@items) { |
|
my ($key,$value) = split(/=/,$item); |
|
$reformatted{&unescape($key)} = &thaw_unescape($value); |
|
} |
|
} |
|
} |
|
return %reformatted; |
|
} |
|
|
sub auto_validate_instclasses { |
sub auto_validate_instclasses { |
my ($cdom,$cnum,$owners,$classesref) = @_; |
my ($cdom,$cnum,$owners,$classesref) = @_; |
my ($homeserver,%validations); |
my ($homeserver,%validations); |