version 1.1520, 2023/12/23 02:17:39
|
version 1.1526, 2024/05/01 12:06:25
|
Line 2783 sub get_domain_defaults {
|
Line 2783 sub get_domain_defaults {
|
} else { |
} else { |
$domdefaults{'defaultquota'} = $domconfig{'quotas'}; |
$domdefaults{'defaultquota'} = $domconfig{'quotas'}; |
} |
} |
my @usertools = ('aboutme','blog','webdav','portfolio'); |
my @usertools = ('aboutme','blog','webdav','portfolio','portaccess'); |
foreach my $item (@usertools) { |
foreach my $item (@usertools) { |
if (ref($domconfig{'quotas'}{$item}) eq 'HASH') { |
if (ref($domconfig{'quotas'}{$item}) eq 'HASH') { |
$domdefaults{$item} = $domconfig{'quotas'}{$item}; |
$domdefaults{$item} = $domconfig{'quotas'}{$item}; |
Line 2858 sub get_domain_defaults {
|
Line 2858 sub get_domain_defaults {
|
} else { |
} else { |
$domdefaults{$type.'crsauthor'} = 1; |
$domdefaults{$type.'crsauthor'} = 1; |
} |
} |
|
if (ref($domconfig{'coursedefaults'}{'crseditors'}) eq 'ARRAY') { |
|
$domdefaults{'crseditors'}=join(',',@{$domconfig{'coursedefaults'}{'crseditors'}}); |
|
} |
} |
} |
if (ref($domconfig{'coursedefaults'}{'canclone'}) eq 'HASH') { |
if (ref($domconfig{'coursedefaults'}{'canclone'}) eq 'HASH') { |
if (ref($domconfig{'coursedefaults'}{'canclone'}{'instcode'}) eq 'ARRAY') { |
if (ref($domconfig{'coursedefaults'}{'canclone'}{'instcode'}) eq 'ARRAY') { |
Line 2975 sub get_domain_defaults {
|
Line 2978 sub get_domain_defaults {
|
$domdefaults{'ltiprivhosts'} = $domconfig{'ltisec'}{'private'}{'keys'}; |
$domdefaults{'ltiprivhosts'} = $domconfig{'ltisec'}{'private'}{'keys'}; |
} |
} |
} |
} |
|
if (ref($domconfig{'ltisec'}{'suggested'}) eq 'HASH') { |
|
my %suggestions = %{$domconfig{'ltisec'}{'suggested'}}; |
|
foreach my $item (keys(%{$domconfig{'ltisec'}{'suggested'}})) { |
|
unless (ref($domconfig{'ltisec'}{'suggested'}{$item}) eq 'HASH') { |
|
delete($suggestions{$item}); |
|
} |
|
} |
|
if (keys(%suggestions)) { |
|
$domdefaults{'linkprotsuggested'} = \%suggestions; |
|
} |
|
} |
} |
} |
if (ref($domconfig{'toolsec'}) eq 'HASH') { |
if (ref($domconfig{'toolsec'}) eq 'HASH') { |
if (ref($domconfig{'toolsec'}{'encrypt'}) eq 'HASH') { |
if (ref($domconfig{'toolsec'}{'encrypt'}) eq 'HASH') { |
Line 6998 sub rolesinit {
|
Line 7012 sub rolesinit {
|
my %allroles=(); |
my %allroles=(); |
my %allgroups=(); |
my %allgroups=(); |
my %gotcoauconfig=(); |
my %gotcoauconfig=(); |
|
my %domdefaults=(); |
|
|
for my $area (grep { ! /^rolesdef_/ } keys(%rolesdump)) { |
for my $area (grep { ! /^rolesdef_/ } keys(%rolesdump)) { |
my $role = $rolesdump{$area}; |
my $role = $rolesdump{$area}; |
Line 7060 sub rolesinit {
|
Line 7075 sub rolesinit {
|
my $name = $item; |
my $name = $item; |
if ($item eq 'authoreditors') { |
if ($item eq 'authoreditors') { |
$name = 'editors'; |
$name = 'editors'; |
|
unless ($info{'authoreditors'}) { |
|
my %domdefs; |
|
if (ref($domdefaults{$audom}) eq 'HASH') { |
|
%domdefs = %{$domdefaults{$audom}}; |
|
} else { |
|
%domdefs = &get_domain_defaults($audom); |
|
$domdefaults{$audom} = \%domdefs; |
|
} |
|
if ($domdefs{$name} ne '') { |
|
$info{'authoreditors'} = $domdefs{$name}; |
|
} else { |
|
$info{'authoreditors'} = 'edit,xml'; |
|
} |
|
} |
} |
} |
$coauthorenv{"environment.internal.$name.$area"} = $info{$item}; |
$coauthorenv{"environment.internal.$name.$area"} = $info{$item}; |
} |
} |
Line 7988 sub portfolio_access {
|
Line 8017 sub portfolio_access {
|
} |
} |
|
|
sub get_portfolio_access { |
sub get_portfolio_access { |
my ($udom,$unum,$file_name,$group,$clientip,$access_hash) = @_; |
my ($udom,$unum,$file_name,$group,$clientip,$access_hash,$portaccessref) = @_; |
|
|
if (!ref($access_hash)) { |
if (!ref($access_hash)) { |
my $current_perms = &get_portfile_permissions($udom,$unum); |
my $current_perms = &get_portfile_permissions($udom,$unum); |
Line 7997 sub get_portfolio_access {
|
Line 8026 sub get_portfolio_access {
|
$access_hash = $access_controls{$file_name}; |
$access_hash = $access_controls{$file_name}; |
} |
} |
|
|
my ($public,$guest,@domains,@users,@courses,@groups,@ips); |
my $portaccess; |
|
if (ref($portaccess) eq 'SCALAR') { |
|
$portaccess = $$portaccessref; |
|
} else { |
|
$portaccess = &usertools_access($unum,$udom,'portaccess',undef,'tools'); |
|
} |
|
|
|
my ($public,$guest,@domains,@users,@courses,@groups,@ips,@userips); |
my $now = time; |
my $now = time; |
if (ref($access_hash) eq 'HASH') { |
if (ref($access_hash) eq 'HASH') { |
foreach my $key (keys(%{$access_hash})) { |
foreach my $key (keys(%{$access_hash})) { |
my ($num,$scope,$end,$start) = ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/); |
my ($num,$scope,$end,$start) = ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/); |
|
next if (($scope ne 'ip') && ($portaccess == 0)); |
if ($start > $now) { |
if ($start > $now) { |
next; |
next; |
} |
} |
Line 8023 sub get_portfolio_access {
|
Line 8060 sub get_portfolio_access {
|
push(@groups,$key); |
push(@groups,$key); |
} elsif ($scope eq 'ip') { |
} elsif ($scope eq 'ip') { |
push(@ips,$key); |
push(@ips,$key); |
|
} elsif ($scope eq 'userip') { |
|
push(@userips,$key); |
} |
} |
} |
} |
if ($public) { |
if ($public) { |
Line 8040 sub get_portfolio_access {
|
Line 8079 sub get_portfolio_access {
|
if ($allowed) { |
if ($allowed) { |
return 'ok'; |
return 'ok'; |
} |
} |
|
} elsif (@userips > 0) { |
|
my $allowed; |
|
foreach my $useripkey (@userips) { |
|
if (ref($access_hash->{$useripkey}{'ip'}) eq 'ARRAY') { |
|
if (&Apache::loncommon::check_ip_acc(join(',',@{$access_hash->{$useripkey}{'ip'}}),$clientip)) { |
|
$allowed = 1; |
|
last; |
|
} |
|
} |
|
} |
|
if ($allowed) { |
|
return 'ok'; |
|
} |
} |
} |
if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { |
if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { |
if ($guest) { |
if ($guest) { |
Line 8253 sub usertools_access {
|
Line 8305 sub usertools_access {
|
%tools = ( |
%tools = ( |
aboutme => 1, |
aboutme => 1, |
blog => 1, |
blog => 1, |
|
webdav => 1, |
portfolio => 1, |
portfolio => 1, |
portaccess => 1, |
portaccess => 1, |
timezone => 1, |
timezone => 1, |