--- loncom/interface/lonuserutils.pm 2017/11/01 02:51:07 1.184.2.1
+++ loncom/interface/lonuserutils.pm 2017/08/08 15:34:32 1.186
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility functions for managing LON-CAPA user accounts
#
-# $Id: lonuserutils.pm,v 1.184.2.1 2017/11/01 02:51:07 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.186 2017/08/08 15:34:32 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -943,8 +943,14 @@ sub print_upload_manager_footer {
&Apache::lonhtmlcommon::row_closure();
}
+ my ($trustedref,$untrustedref);
+ if ($context eq 'course') {
+ ($trustedref,$untrustedref) = &Apache::lonnet::trusted_domains('enroll',$defdom);
+ } elsif ($context eq 'author') {
+ ($trustedref,$untrustedref) = &Apache::lonnet::trusted_domains('othcoau',$defdom);
+ }
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Default domain'))
- .&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1)
+ .&Apache::loncommon::select_dom_form($defdom,'defaultdomain',undef,1,undef,$trustedref,$untrustedref)
.&Apache::lonhtmlcommon::row_closure();
$Str .= &Apache::lonhtmlcommon::row_title(&mt('Starting and Ending Dates'))
@@ -1121,10 +1127,8 @@ sub print_upload_manager_form {
if (!$env{'form.datatoken'}) {
$datatoken=&Apache::loncommon::upfile_store($r);
} else {
- $datatoken=&Apache::loncommon::valid_datatoken($env{'form.datatoken'});
- if ($datatoken ne '') {
- &Apache::loncommon::load_tmp_file($r,$datatoken);
- }
+ $datatoken=$env{'form.datatoken'};
+ &Apache::loncommon::load_tmp_file($r);
}
my @records=&Apache::loncommon::upfile_record_sep();
if($env{'form.noFirstLine'}){
@@ -4109,10 +4113,7 @@ sub print_first_users_upload_form {
# ================================================= Drop/Add from uploaded file
sub upfile_drop_add {
my ($r,$context,$permission,$showcredits) = @_;
- my $datatoken = &Apache::loncommon::valid_datatoken($env{'form.datatoken'});
- if ($datatoken ne '') {
- &Apache::loncommon::load_tmp_file($r,$datatoken);
- }
+ &Apache::loncommon::load_tmp_file($r);
my @userdata=&Apache::loncommon::upfile_record_sep();
if($env{'form.noFirstLine'}){shift(@userdata);}
my @keyfields = split(/\,/,$env{'form.keyfields'});
@@ -4143,17 +4144,19 @@ sub upfile_drop_add {
$fieldstype{$field.'_choice'} = 'scalar';
}
&Apache::loncommon::store_course_settings('enrollment_upload',\%fieldstype);
- my ($cid,$crstype,$setting);
+ my ($cid,$crstype,$setting,$crsdom);
if ($context eq 'domain') {
$setting = $env{'form.roleaction'};
}
if ($env{'request.course.id'} ne '') {
$cid = $env{'request.course.id'};
$crstype = &Apache::loncommon::course_type();
+ $crsdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
} elsif ($setting eq 'course') {
if (&Apache::lonnet::is_course($env{'form.dcdomain'},$env{'form.dccourse'})) {
$cid = $env{'form.dcdomain'}.'_'.$env{'form.dccourse'};
$crstype = &Apache::loncommon::course_type($cid);
+ $crsdom = $env{'form.dcdomain'};
}
}
my ($startdate,$enddate) = &get_dates_from_form();
@@ -4164,7 +4167,43 @@ sub upfile_drop_add {
my $defdom=$env{'request.role.domain'};
my $domain;
if ($env{'form.defaultdomain'} ne '') {
- $domain = $env{'form.defaultdomain'};
+ if (($context eq 'course') || ($setting eq 'course')) {
+ unless ($env{'form.defaultdomain'} eq $crsdom) {
+ if (&Apache::lonnet::will_trust('enroll',$crsdom,$env{'form.defaultdomain'})) {
+ $domain = $env{'form.defaultdomain'};
+ } else {
+ $r->print(''.&mt('Error').
+ &mt('Enrollment of users not permitted for specified default domain: [_1].',
+ &Apache::lonnet::domain($env{'form.defaultdomain'},'description')).'');
+ $r->print(&Apache::loncommon::end_page());
+ }
+ return;
+ }
+ } elsif ($context eq 'author') {
+ unless ($env{'form.defaultdomain'} eq $defdom) {
+ if ((&Apache::lonnet::will_trust('othcoau',$defdom,$env{'form.defaultdomain'})) &&
+ (&Apache::lonnet::will_trust('coaurem',$env{'form.defaultdomain'},$defdom))) {
+ $domain = $env{'form.defaultdomain'};
+ } else {
+ $r->print(''.&mt('Error').
+ &mt('Addition of users not permitted for specified default domain: [_1].',
+ &Apache::lonnet::domain($env{'form.defaultdomain'},'description')).'');
+ $r->print(&Apache::loncommon::end_page());
+ }
+ return;
+ }
+ } elsif (($context eq 'domain') && ($setting eq 'domain')) {
+ unless ($env{'form.defaultdomain'} eq $defdom) {
+ if (&Apache::lonnet::will_trust('domroles',$defdom,$env{'form.defaultdomain'})) {
+ $domain = $env{'form.defaultdomain'};
+ } else {
+ $r->print(''.&mt('Error').
+ &mt('Addition of users not permitted for specified default domain: [_1].',
+ &Apache::lonnet::domain($env{'form.defaultdomain'},'description')).'');
+ $r->print(&Apache::loncommon::end_page());
+ }
+ }
+ }
} else {
$domain = $defdom;
}
@@ -4348,6 +4387,7 @@ sub upfile_drop_add {
# Get new users list
my (%existinguser,%userinfo,%disallow,%rulematch,%inst_results,%alerts,%checkuname);
my $counter = -1;
+ my (%willtrust,%trustchecked);
foreach my $line (@userdata) {
$counter ++;
my @secs;
@@ -4395,6 +4435,28 @@ sub upfile_drop_add {
'"'.$entries{$fields{'domain'}}.'"',
$fname,$mname,$lname,$gen);
next;
+ } elsif ($entries{$fields{'domain'}} ne $domain) {
+ my $possdom = $entries{$fields{'domain'}};
+ if ($context eq 'course' || $setting eq 'course') {
+ unless ($trustchecked{$possdom}) {
+ $willtrust{$possdom} = &Apache::lonnet::will_trust('enroll',$domain,$possdom);
+ $trustchecked{$possdom} = 1;
+ }
+ } elsif ($context eq 'author') {
+ unless ($trustchecked{$possdom}) {
+ $willtrust{$possdom} = &Apache::lonnet::will_trust('othcoau',$domain,$possdom);
+ }
+ if ($willtrust{$possdom}) {
+ $willtrust{$possdom} = &Apache::lonnet::will_trust('coaurem',$possdom,$domain);
+ }
+ }
+ unless ($willtrust{$possdom}) {
+ $disallow{$counter} =
+ &mt('Unacceptable domain [_1] for user [_2] [_3] [_4] [_5]',
+ '"'.$possdom.'"',
+ $fname,$mname,$lname,$gen);
+ next;
+ }
}
my $username = $entries{$fields{'username'}};
my $userdomain = $entries{$fields{'domain'}};