version 1.1172.2.118.2.20, 2021/06/20 18:54:07
|
version 1.1172.2.118.2.21, 2021/06/20 19:53:37
|
Line 8002 sub allowed {
|
Line 8002 sub allowed {
|
my $adom = $1; |
my $adom = $1; |
foreach my $key (keys(%env)) { |
foreach my $key (keys(%env)) { |
if ($key =~ m{^user\.role\.(ca|aa)/\Q$adom\E}) { |
if ($key =~ m{^user\.role\.(ca|aa)/\Q$adom\E}) { |
my ($start,$end) = split('.',$env{$key}); |
my ($start,$end) = split(/\./,$env{$key}); |
if (($now >= $start) && (!$end || $end < $now)) { |
if (($now >= $start) && (!$end || $end > $now)) { |
$ownaccess = 1; |
$ownaccess = 1; |
last; |
last; |
} |
} |
Line 8015 sub allowed {
|
Line 8015 sub allowed {
|
foreach my $role ('ca','aa') { |
foreach my $role ('ca','aa') { |
if ($env{"user.role.$role./$adom/$aname"}) { |
if ($env{"user.role.$role./$adom/$aname"}) { |
my ($start,$end) = |
my ($start,$end) = |
split('.',$env{"user.role.$role./$adom/$aname"}); |
split(/\./,$env{"user.role.$role./$adom/$aname"}); |
if (($now >= $start) && (!$end || $end < $now)) { |
if (($now >= $start) && (!$end || $end > $now)) { |
$ownaccess = 1; |
$ownaccess = 1; |
last; |
last; |
} |
} |
Line 8281 sub allowed {
|
Line 8281 sub allowed {
|
# |
# |
|
|
# Possibly locked functionality, check all courses |
# Possibly locked functionality, check all courses |
|
# In roles.tab, L (unless locked) available for bre, pch, plc, pac and sma. |
# Locks might take effect only after 10 minutes cache expiration for other |
# Locks might take effect only after 10 minutes cache expiration for other |
# courses, and 2 minutes for current course |
# courses, and 2 minutes for current course, in which user has st or ta role |
|
# which is neither expired nor a future role (unless current course). |
|
|
my $envkey; |
my ($needlockcheck,$now,$crsonly); |
if ($thisallowed=~/L/) { |
if ($thisallowed=~/L/) { |
foreach $envkey (keys(%env)) { |
$now = time; |
|
if ($priv eq 'bre') { |
|
if ($uri ne '') { |
|
if ($orguri =~ m{^/+res/}) { |
|
if ($uri =~ m{^lib/templates/}) { |
|
if ($env{'request.course.id'}) { |
|
$crsonly = 1; |
|
$needlockcheck = 1; |
|
} |
|
} else { |
|
$needlockcheck = 1; |
|
} |
|
} elsif ($env{'request.course.id'}) { |
|
my ($crsdom,$crsnum) = split('_',$env{'request.course.id'}); |
|
if (($uri =~ m{^(adm|uploaded|public)/$crsdom/$crsnum/}) || |
|
($uri =~ m{^adm/$match_domain/$match_username/\d+/(smppg|bulletinboard)$})) { |
|
$crsonly = 1; |
|
} |
|
$needlockcheck = 1; |
|
} |
|
} |
|
} elsif (($priv eq 'pch') || ($priv eq 'plc') || ($priv eq 'pac') || ($priv eq 'sma')) { |
|
$needlockcheck = 1; |
|
} |
|
} |
|
if ($needlockcheck) { |
|
foreach my $envkey (keys(%env)) { |
if ($envkey=~/^user\.role\.(st|ta)\.([^\.]*)/) { |
if ($envkey=~/^user\.role\.(st|ta)\.([^\.]*)/) { |
my $courseid=$2; |
my $courseid=$2; |
my $roleid=$1.'.'.$2; |
my $roleid=$1.'.'.$2; |
$courseid=~s/^\///; |
$courseid=~s/^\///; |
|
unless ($env{'request.role'} eq $roleid) { |
|
my ($start,$end) = split(/\./,$env{$envkey}); |
|
next unless (($now >= $start) && (!$end || $end > $now)); |
|
} |
my $expiretime=600; |
my $expiretime=600; |
if ($env{'request.role'} eq $roleid) { |
if ($env{'request.role'} eq $roleid) { |
$expiretime=120; |
$expiretime=120; |
Line 8313 sub allowed {
|
Line 8345 sub allowed {
|
} |
} |
if (($env{$prefix.'priv.'.$priv.'.lock.sections'}=~/\,\Q$csec\E\,/) |
if (($env{$prefix.'priv.'.$priv.'.lock.sections'}=~/\,\Q$csec\E\,/) |
|| ($env{$prefix.'priv.'.$priv.'.lock.sections'} eq 'all')) { |
|| ($env{$prefix.'priv.'.$priv.'.lock.sections'} eq 'all')) { |
if ($env{'priv.'.$priv.'.lock.expire'}>time) { |
if ($env{$prefix.'priv.'.$priv.'.lock.expire'}>time) { |
&log($env{'user.domain'},$env{'user.name'}, |
&log($env{'user.domain'},$env{'user.name'}, |
$env{'user.home'}, |
$env{'user.home'}, |
'Locked by priv: '.$priv.' for '.$uri.' due to '. |
'Locked by priv: '.$priv.' for '.$uri.' due to '. |