--- loncom/auth/lonroles.pm 2020/02/04 01:27:04 1.343 +++ loncom/auth/lonroles.pm 2021/04/19 20:09:07 1.346 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.343 2020/02/04 01:27:04 raeburn Exp $ +# $Id: lonroles.pm,v 1.346 2021/04/19 20:09:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -505,6 +505,7 @@ sub handler { my $end_page=&Apache::loncommon::end_page(); my $buttontext=&mt('Enter Course'); my $message=&mt('Successfully registered key'); + my $ip = &Apache::lonnet::get_requestor_ip(); my $assignresult= &Apache::lonnet::assign_access_key( $env{'form.newkey'}, @@ -513,7 +514,7 @@ sub handler { $env{'user.domain'}, $env{'user.name'}, &mt('Assigned from [_1] at [_2] for [_3]' - ,$ENV{'REMOTE_ADDR'} + ,$ip ,&Apache::lonlocal::locallocaltime() ,$trolecode) ); @@ -590,9 +591,21 @@ ENDENTERKEY } } } - my $msg; + my ($msg,$blockcrit,$critmsg_check); + $critmsg_check = 1; + $blockcrit = &Apache::loncommon::blocking_status('alert',$cnum,$cdom,undef,1); + if ($blockcrit) { + my $checkrole = "cm./$cdom/$cnum"; + if ($csec ne '') { + $checkrole .= "/$csec"; + } + unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) && + ($trolecode !~ m{^st\./$cdom/$cnum})) { + $critmsg_check = 0; + } + } my ($furl,$ferr)= - &Apache::lonuserstate::readmap($cdom.'/'.$cnum); + &Apache::lonuserstate::readmap($cdom.'/'.$cnum,$critmsg_check); unless ($ferr) { &Apache::lonnet::appenv({'request.course.timechecked'=>$now}); unless (($env{'form.switchrole'}) || @@ -652,6 +665,13 @@ ENDENTERKEY if (($ferr) && ($tadv)) { &error_page($r,$ferr,$dest); } else { + if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { + if (($env{'form.orgurl'} ne '') && ($env{'form.symb'} ne '')) { + unless (&Apache::lonnet::symbverify($env{'form.symb'},$env{'form.orgurl'}) { + $dest=$env{'form.orgurl'}; + } + } + } if ($dest =~ m{^/adm/coursedocs\?folderpath}) { if ($env{'request.course.id'} eq $cdom.'_'.$cnum) { my $chome = &Apache::lonnet::homeserver($cnum,$cdom);