--- loncom/lonnet/perl/lonnet.pm 2009/08/14 17:46:10 1.1016 +++ loncom/lonnet/perl/lonnet.pm 2009/08/15 00:25:53 1.1017 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.1016 2009/08/14 17:46:10 raeburn Exp $ +# $Id: lonnet.pm,v 1.1017 2009/08/15 00:25:53 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -6102,7 +6102,17 @@ sub assignrole { if ($refused) { if (($selfenroll == 1) && ($role eq 'st') && ($udom eq $env{'user.domain'}) && ($uname eq $env{'user.name'})) { $refused = ''; - } else { + } elsif ($context eq 'requestcourses') { + if (($role eq 'cc') && ($env{'user.name'} ne '' && $env{'user.domain'} ne '')) { + my ($cdom,$cnum) = ($cwosec =~ m{^/($match_domain)/($match_courseid)$}); + my %crsenv = &userenvironment($cdom,$cnum,('internal.courseowner')); + if ($crsenv{'internal.courseowner'} eq + $env{'user.name'}.':'.$env{'user.domain'}) { + $refused = ''; + } + } + } + if ($refused) { &logthis('Refused assignrole: '.$udom.' '.$uname.' '.$url. ' '.$role.' '.$end.' '.$start.' by '. $env{'user.name'}.' at '.$env{'user.domain'}); @@ -6426,11 +6436,17 @@ sub writecoursepref { sub createcourse { my ($udom,$description,$url,$course_server,$nonstandard,$inst_code, - $course_owner,$crstype,$cnum)=@_; + $course_owner,$crstype,$cnum,$context,$category)=@_; $url=&declutter($url); my $cid=''; unless (&allowed('ccc',$udom)) { - return 'refused'; + if ($context eq 'requestcourses') { + unless (&usertools_access($course_owner,$udom,$category,undef,$context)) { + return 'refused'; + } + } else { + return 'refused'; + } } # --------------------------------------------------------------- Get Unique ID my $uname; @@ -6534,7 +6550,11 @@ sub store_userdata { my $result; if ($datakey ne '') { if (ref($storehash) eq 'HASH') { - my $uhome=&homeserver(); + if ($udom eq '' || $uname eq '') { + $udom = $env{'user.domain'}; + $uname = $env{'user.name'}; + } + my $uhome=&homeserver($uname,$udom); if (($uhome eq '') || ($uhome eq 'no_host')) { $result = 'error: no_host'; } else {