version 1.158.2.13.2.12, 2024/09/18 16:35:51
|
version 1.158.2.16, 2024/07/04 04:36:42
|
Line 49 sub handler {
|
Line 49 sub handler {
|
(join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'}, |
(join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'}, |
$ENV{'REDIRECT_QUERY_STRING'}), |
$ENV{'REDIRECT_QUERY_STRING'}), |
['interface','username','domain','firsturl','localpath','localres', |
['interface','username','domain','firsturl','localpath','localres', |
'token','role','symb','iptoken','btoken','ltoken','ttoken','linkkey', |
'token','role','symb','iptoken','btoken','saml','sso','retry']); |
'saml','sso','retry','display']); |
|
|
|
# -- check if they are a migrating user |
# -- check if they are a migrating user |
if (defined($env{'form.token'})) { |
if (defined($env{'form.token'})) { |
Line 58 sub handler {
|
Line 57 sub handler {
|
} |
} |
|
|
my $lonhost = $r->dir_config('lonHostID'); |
my $lonhost = $r->dir_config('lonHostID'); |
if ($env{'form.ttoken'}) { |
if (($env{'form.sso'}) || ($env{'form.retry'})) { |
my %info = &Apache::lonnet::tmpget($env{'form.ttoken'}); |
|
&Apache::lonnet::tmpdel($env{'form.ttoken'}); |
|
if ($info{'origurl'}) { |
|
$env{'form.firsturl'} = $info{'origurl'}; |
|
} |
|
if ($info{'ltoken'}) { |
|
$env{'form.ltoken'} = $info{'ltoken'}; |
|
} elsif ($info{'linkprot'}) { |
|
$env{'form.linkprot'} = $info{'linkprot'}; |
|
foreach my $item ('linkprotuser','linkprotexit','linkprotpbid','linkprotpburl') { |
|
if ($info{$item} ne '') { |
|
$env{'form.'.$item} = $info{$item}; |
|
} |
|
} |
|
} elsif ($info{'linkkey'} ne '') { |
|
$env{'form.linkkey'} = $info{'linkkey'}; |
|
} |
|
} elsif (($env{'form.sso'}) || ($env{'form.retry'})) { |
|
my $infotoken; |
my $infotoken; |
if ($env{'form.sso'}) { |
if ($env{'form.sso'}) { |
$infotoken = $env{'form.sso'}; |
$infotoken = $env{'form.sso'}; |
Line 96 sub handler {
|
Line 77 sub handler {
|
if (!defined($env{'form.firsturl'})) { |
if (!defined($env{'form.firsturl'})) { |
&Apache::lonacc::get_posted_cgi($r,['firsturl']); |
&Apache::lonacc::get_posted_cgi($r,['firsturl']); |
} |
} |
if (!defined($env{'form.firsturl'})) { |
|
if ($ENV{'REDIRECT_URL'} =~ m{^/+tiny/+$LONCAPA::match_domain/+\w+$}) { |
|
$env{'form.firsturl'} = $ENV{'REDIRECT_URL'}; |
|
} |
|
} |
|
if (($env{'form.firsturl'} =~ m{^/+tiny/+$LONCAPA::match_domain/+\w+$}) && |
|
(!$env{'form.ltoken'}) && (!$env{'form.linkprot'}) && (!$env{'form.linkkey'})) { |
|
&Apache::lonacc::get_posted_cgi($r,['linkkey']); |
|
} |
|
if ($env{'form.firsturl'} eq '/adm/logout') { |
if ($env{'form.firsturl'} eq '/adm/logout') { |
delete($env{'form.firsturl'}); |
delete($env{'form.firsturl'}); |
} |
} |
Line 175 sub handler {
|
Line 147 sub handler {
|
if ($env{'form.symb'}) { |
if ($env{'form.symb'}) { |
$info{'symb'} = $env{'form.symb'}; |
$info{'symb'} = $env{'form.symb'}; |
} |
} |
if (($env{'form.firsturl'} eq '/adm/email') && ($env{'form.display'} ne '')) { |
|
if ($env{'form.sso'}) { |
|
if ($env{'form.mailrecip'}) { |
|
$info{'display'} = &escape($env{'form.display'}); |
|
$info{'mailrecip'} = &escape($env{'form.mailrecip'}); |
|
} |
|
} else { |
|
if (($env{'form.username'}) && ($env{'form.domain'})) { |
|
$info{'display'} = &escape($env{'form.display'}); |
|
$info{'mailrecip'} = &escape($env{'form.username'}.':'.$env{'form.domain'}); |
|
} |
|
} |
|
} |
|
my $balancer_token = &Apache::lonnet::tmpput(\%info,$found_server); |
my $balancer_token = &Apache::lonnet::tmpput(\%info,$found_server); |
unless (($balancer_token eq 'con_lost') || ($balancer_token eq 'refused') || |
unless (($balancer_token eq 'con_lost') || ($balancer_token eq 'refused') || |
($balancer_token eq 'unknown_cmd') || ($balancer_token eq 'no_such_host')) { |
($balancer_token eq 'unknown_cmd') || ($balancer_token eq 'no_such_host')) { |
$dest .= (($dest=~/\?/)?'&':'?') . 'btoken='.$balancer_token; |
$dest .= (($dest=~/\?/)?'&':'?') . 'btoken='.$balancer_token; |
} |
} |
if ($env{'form.firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { |
|
my %link_info; |
|
if ($env{'form.ltoken'}) { |
|
$link_info{'ltoken'} = $env{'form.ltoken'}; |
|
} elsif ($env{'form.linkprot'}) { |
|
$link_info{'linkprot'} = $env{'form.linkprot'}; |
|
foreach my $item ('linkprotuser','linkprotexit','linkprotpbid','linkprotpburl') { |
|
if ($env{'form.'.$item} ne '') { |
|
$link_info{$item} = $env{'form.'.$item}; |
|
} |
|
} |
|
} elsif ($env{'form.linkkey'} ne '') { |
|
$link_info{'linkkey'} = $env{'form.linkkey'}; |
|
} |
|
if (keys(%link_info)) { |
|
$link_info{'origurl'} = $env{'form.firsturl'}; |
|
my $token = &Apache::lonnet::tmpput(\%link_info,$found_server,'link'); |
|
unless (($token eq 'con_lost') || ($token eq 'refused') || |
|
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
|
$dest .= (($dest=~/\?/)?'&':'?') . 'ttoken='.$token; |
|
} |
|
} |
|
} |
|
unless ($found_server eq $lonhost) { |
unless ($found_server eq $lonhost) { |
my $alias = &Apache::lonnet::use_proxy_alias($r,$found_server); |
my $alias = &Apache::lonnet::use_proxy_alias($r,$found_server); |
$hostname = $alias if ($alias ne ''); |
$hostname = $alias if ($alias ne ''); |
Line 241 sub handler {
|
Line 177 sub handler {
|
$balcookie = $info{'balcookie'}; |
$balcookie = $info{'balcookie'}; |
&Apache::lonnet::tmpdel($env{'form.btoken'}); |
&Apache::lonnet::tmpdel($env{'form.btoken'}); |
delete($env{'form.btoken'}); |
delete($env{'form.btoken'}); |
if (($env{'form.firsturl'} eq '/adm/email') && |
|
(exists($info{'display'})) && (exists($info{'mailrecip'}))) { |
|
$env{'form.display'} = &unescape($info{'display'}); |
|
$env{'form.mailrecip'} = &unescape($info{'mailrecip'}); |
|
} |
|
} |
} |
|
|
# |
# |
Line 276 sub handler {
|
Line 207 sub handler {
|
if ($env{'form.firsturl'} ne '') { |
if ($env{'form.firsturl'} ne '') { |
$dest = &HTML::Entities::encode($env{'form.firsturl'},'\'"<>&'); |
$dest = &HTML::Entities::encode($env{'form.firsturl'},'\'"<>&'); |
} |
} |
if (($env{'form.ltoken'}) || ($env{'form.linkprot'})) { |
|
my ($linkprot,$linkprotuser,$linkprotexit,$linkprotpbid,$linkprotpburl); |
|
if ($env{'form.ltoken'}) { |
|
my %info = &Apache::lonnet::tmpget($env{'form.ltoken'}); |
|
$linkprot = $info{'linkprot'}; |
|
if ($info{'linkprotuser'} ne '') { |
|
$linkprotuser = $info{'linkprotuser'}; |
|
} |
|
if ($info{'linkprotexit'} ne '') { |
|
$linkprotexit = $info{'linkprotexit'}; |
|
} |
|
if ($info{'linkprotpbid'} ne '') { |
|
$linkprotpbid = $info{'linkprotpbid'}; |
|
} |
|
if ($info{'linkprotpburl'} ne '') { |
|
$linkprotpburl = $info{'linkprotpburl'}; |
|
} |
|
} else { |
|
$linkprot = $env{'form.linkprot'}; |
|
$linkprotuser = $env{'form.linkprotuser'}; |
|
$linkprotexit = $env{'form.linkprotexit'}; |
|
$linkprotpbid = $env{'form.linkprotpbid'}; |
|
$linkprotpburl = $env{'form.linkprotpburl'}; |
|
} |
|
if ($linkprot) { |
|
my ($linkprotector,$deeplink) = split(/:/,$linkprot,2); |
|
if (($deeplink =~ m{^/tiny/$match_domain/\w+$}) && |
|
($linkprotuser ne '') && ($linkprotuser ne $env{'user.name'}.':'.$env{'user.domain'})) { |
|
my $ip = &Apache::lonnet::get_requestor_ip(); |
|
my %linkprotinfo = ( |
|
origurl => $deeplink, |
|
linkprot => $linkprot, |
|
linkprotuser => $linkprotuser, |
|
linkprotexit => $linkprotexit, |
|
linkprotpbid => $linkprotpbid, |
|
linkprotpburl => $linkprotpburl, |
|
); |
|
if ($env{'form.ltoken'}) { |
|
my $delete = &Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
} |
|
&Apache::migrateuser::logout($r,$ip,$handle,undef,undef,\%linkprotinfo); |
|
return OK; |
|
} |
|
if ($env{'user.linkprotector'}) { |
|
my @protectors = split(/,/,$env{'user.linkprotector'}); |
|
unless (grep(/^\Q$linkprotector\E$/,@protectors)) { |
|
push(@protectors,$linkprotector); |
|
@protectors = sort { $a <=> $b } @protectors; |
|
&Apache::lonnet::appenv({'user.linkprotector' => join(',',@protectors)}); |
|
} |
|
} else { |
|
&Apache::lonnet::appenv({'user.linkprotector' => $linkprotector }); |
|
} |
|
if ($env{'user.linkproturi'}) { |
|
my @proturis = split(/,/,$env{'user.linkproturi'}); |
|
unless (grep(/^\Q$deeplink\E$/,@proturis)) { |
|
push(@proturis,$deeplink); |
|
@proturis = sort @proturis; |
|
&Apache::lonnet::appenv({'user.linkproturi' => join(',',@proturis)}); |
|
} |
|
} else { |
|
&Apache::lonnet::appenv({'user.linkproturi' => $deeplink}); |
|
} |
|
} |
|
} elsif ($env{'form.linkkey'} ne '') { |
|
if ($env{'form.firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { |
|
my $linkkey = $env{'form.linkkey'}; |
|
if ($env{'user.deeplinkkey'}) { |
|
my @linkkeys = split(/,/,$env{'user.deeplinkkey'}); |
|
unless (grep(/^\Q$linkkey\E$/,@linkkeys)) { |
|
push(@linkkeys,$linkkey); |
|
&Apache::lonnet::appenv({'user.deeplinkkey' => join(',',sort(@linkkeys))}); |
|
} |
|
} else { |
|
&Apache::lonnet::appenv({'user.deeplinkkey' => $linkkey}); |
|
} |
|
my $deeplink = $env{'form.firsturl'}; |
|
if ($env{'user.keyedlinkuri'}) { |
|
my @keyeduris = split(/,/,$env{'user.keyedlinkuri'}); |
|
unless (grep(/^\Q$deeplink\E$/,@keyeduris)) { |
|
push(@keyeduris,$deeplink); |
|
&Apache::lonnet::appenv({'user.keyedlinkuri' => join(',',sort(@keyeduris))}); |
|
} |
|
} else { |
|
&Apache::lonnet::appenv({'user.keyedlinkuri' => $deeplink}); |
|
} |
|
} |
|
} |
|
if ($env{'form.ltoken'}) { |
|
my $delete = &Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
} |
|
if (($env{'form.firsturl'} eq '/adm/email') && ($env{'form.display'})) { |
|
if ($env{'form.mailrecip'}) { |
|
if ($env{'form.mailrecip'} eq "$env{'user.name'}:$env{'user.domain'}") { |
|
$dest .= (($dest=~/\?/)?'&':'?') . 'display='.&escape($env{'form.display'}). |
|
'&mailrecip='.&escape($env{'form.mailrecip'}); |
|
} |
|
} elsif (($env{'form.username'} eq $env{'user.name'}) && ($env{'form.domain'} eq $env{'user.domain'})) { |
|
$dest .= (($dest=~/\?/)?'&':'?') . 'display='.&escape($env{'form.display'}). |
|
'&mailrecip='.&escape("$env{'user.name'}:$env{'form.domain'}"); |
|
} |
|
} |
|
$r->print( |
$r->print( |
$start_page |
$start_page |
.'<p class="LC_warning">'.&mt('You are already logged in!').'</p>' |
.'<p class="LC_warning">'.&mt('You are already logged in!').'</p>' |
Line 502 sub handler {
|
Line 331 sub handler {
|
if ($uextkey>2147483647) { $uextkey-=4294967296; } |
if ($uextkey>2147483647) { $uextkey-=4294967296; } |
|
|
# -------------------------------------------------------- Store away log token |
# -------------------------------------------------------- Store away log token |
my ($tokenextras,$tokentype,$linkprot_for_login); |
my $tokenextras; |
my @names = ('role','symb','iptoken','ltoken','linkprotuser','linkprotexit', |
my @names = ('role','symb','iptoken'); |
'linkprot','linkkey','display','linkprotpbid','linkprotpburl'); |
|
foreach my $name (@names) { |
foreach my $name (@names) { |
if ($env{'form.'.$name} ne '') { |
if ($env{'form.'.$name} ne '') { |
if ($name eq 'ltoken') { |
$tokenextras .= '&'.$name.'='.&escape($env{'form.'.$name}); |
my %info = &Apache::lonnet::tmpget($env{'form.'.$name}); |
|
if ($info{'linkprot'}) { |
|
$linkprot_for_login = $info{'linkprot'}; |
|
$tokenextras .= '&linkprot='.&escape($info{'linkprot'}); |
|
foreach my $item ('linkprotuser','linkprotexit','linkprotpbid','linkprotpburl') { |
|
if ($info{$item}) { |
|
$tokenextras .= '&'.$item.'='.&escape($info{$item}); |
|
} |
|
} |
|
$tokentype = 'link'; |
|
last; |
|
} |
|
} elsif ($env{'form.display'} && ($env{'form.firsturl'} eq '/adm/email')) { |
|
if (($env{'form.mailrecip'}) || |
|
($env{'form.username'} =~ /^$match_username$/) && ($env{'form.domain'} =~ /^$match_domain$/)) { |
|
$tokenextras .= '&'.$name.'='.&escape($env{'form.display'}); |
|
if ($env{'form.mailrecip'}) { |
|
$tokenextras .= '&mailrecip='.&escape($env{'form.mailrecip'}); |
|
} else { |
|
$tokenextras .= '&mailrecip='.&escape($env{'form.username'}.':'.$env{'form.domain'}); |
|
} |
|
} |
|
} else { |
|
$tokenextras .= '&'.$name.'='.&escape($env{'form.'.$name}); |
|
if (($name eq 'linkkey') || ($name eq 'linkprot')) { |
|
if ((($env{'form.retry'}) || ($env{'form.sso'})) && |
|
(!$env{'form.ltoken'}) && ($name eq 'linkprot')) { |
|
$linkprot_for_login = $env{'form.linkprot'}; |
|
} |
|
$tokentype = 'link'; |
|
} |
|
} |
|
} |
} |
} |
} |
if ($tokentype) { |
|
$tokenextras .= ":$tokentype"; |
|
} |
|
my $logtoken=Apache::lonnet::reply( |
my $logtoken=Apache::lonnet::reply( |
'tmpput:'.$ukey.$lkey.'&'.&escape($firsturl).$tokenextras, |
'tmpput:'.$ukey.$lkey.'&'.&escape($firsturl).$tokenextras, |
$lonhost); |
$lonhost); |
Line 556 sub handler {
|
Line 349 sub handler {
|
if ($logtoken eq 'no_such_host') { |
if ($logtoken eq 'no_such_host') { |
&Apache::lonnet::logthis('No valid logtoken for log-in page -- unable to determine hostname for hostID: '.$lonhost.'. Check entry in hosts.tab'); |
&Apache::lonnet::logthis('No valid logtoken for log-in page -- unable to determine hostname for hostID: '.$lonhost.'. Check entry in hosts.tab'); |
} |
} |
if ($env{'form.ltoken'}) { |
|
&Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
delete($env{'form.ltoken'}); |
|
} |
|
my $spares=''; |
my $spares=''; |
my (@sparehosts,%spareservers); |
my (@sparehosts,%spareservers); |
my $sparesref = &Apache::lonnet::this_host_spares($defdom); |
my $sparesref = &Apache::lonnet::this_host_spares($defdom); |
Line 709 function enableInput() {
|
Line 498 function enableInput() {
|
ENDSCRIPT |
ENDSCRIPT |
|
|
my ($lonhost_in_use,@hosts,%defaultdomconf,$saml_prefix,$saml_landing, |
my ($lonhost_in_use,@hosts,%defaultdomconf,$saml_prefix,$saml_landing, |
$samlssotext,$samlnonsso,$samlssoimg,$samlssoalt,$samlssourl,$samltooltip, |
$samlssotext,$samlnonsso,$samlssoimg,$samlssoalt,$samlssourl,$samltooltip); |
$samlwindow); |
|
%defaultdomconf = &Apache::loncommon::get_domainconf($defdom); |
%defaultdomconf = &Apache::loncommon::get_domainconf($defdom); |
@hosts = &Apache::lonnet::current_machine_ids(); |
@hosts = &Apache::lonnet::current_machine_ids(); |
$lonhost_in_use = $lonhost; |
$lonhost_in_use = $lonhost; |
Line 731 ENDSCRIPT
|
Line 519 ENDSCRIPT
|
$samlssoalt = $defaultdomconf{$saml_prefix.'alt_'.$lonhost_in_use}; |
$samlssoalt = $defaultdomconf{$saml_prefix.'alt_'.$lonhost_in_use}; |
$samlssourl = $defaultdomconf{$saml_prefix.'url_'.$lonhost_in_use}; |
$samlssourl = $defaultdomconf{$saml_prefix.'url_'.$lonhost_in_use}; |
$samltooltip = $defaultdomconf{$saml_prefix.'title_'.$lonhost_in_use}; |
$samltooltip = $defaultdomconf{$saml_prefix.'title_'.$lonhost_in_use}; |
$samlwindow = $defaultdomconf{$saml_prefix.'window_'.$lonhost_in_use}; |
|
} |
} |
if ($saml_landing) { |
if ($saml_landing) { |
if ($samlssotext eq '') { |
if ($samlssotext eq '') { |
Line 852 ENDSAMLJS
|
Line 639 ENDSAMLJS
|
.' style="margin:0 auto; padding:10px; width:90%; height: auto; background-color:#FFFFFF;">' |
.' style="margin:0 auto; padding:10px; width:90%; height: auto; background-color:#FFFFFF;">' |
); |
); |
|
|
my $target = '_top'; |
|
if ($sessiondata{'linkprot'}) { |
|
my ($linkprotector,$deeplink) = split(/:/,$sessiondata{'linkprot'},2); |
|
if (($deeplink eq $sessiondata{'origurl'}) && |
|
(($sessiondata{'linkprotuser'} eq $sessiondata{'username'}.':'.$sessiondata{'domain'}) || |
|
($sessiondata{'linkprotuser'} eq $sessiondata{'username'}))) { |
|
$target = '_self'; |
|
} |
|
} |
|
$r->print(<<ENDSERVERFORM); |
$r->print(<<ENDSERVERFORM); |
<form name="server" action="/adm/authenticate" method="post" target="$target"> |
<form name="server" action="/adm/authenticate" method="post" target="_top"> |
<input type="hidden" name="logtoken" value="$logtoken" /> |
<input type="hidden" name="logtoken" value="$logtoken" /> |
<input type="hidden" name="serverid" value="$lonhost" /> |
<input type="hidden" name="serverid" value="$lonhost" /> |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="uname" value="" /> |
Line 928 HEADER
|
Line 706 HEADER
|
|
|
my $stdauthformstyle = 'inline-block'; |
my $stdauthformstyle = 'inline-block'; |
my $ssoauthstyle = 'none'; |
my $ssoauthstyle = 'none'; |
my $sso_onclick; |
|
my $logintype; |
my $logintype; |
$r->print('<div style="float:left;margin-top:0;">'); |
$r->print('<div style="float:left;margin-top:0;">'); |
if ($saml_landing) { |
if ($saml_landing) { |
Line 939 HEADER
|
Line 716 HEADER
|
if ($samlssourl ne '') { |
if ($samlssourl ne '') { |
$ssologin = $samlssourl; |
$ssologin = $samlssourl; |
} |
} |
my $ssologin_for_js = &js_escape($ssologin); |
|
my $querystr_for_js; |
|
if (($logtoken eq 'con_lost') || ($logtoken eq 'no_such_host')) { |
if (($logtoken eq 'con_lost') || ($logtoken eq 'no_such_host')) { |
my $querystring; |
my $querystring; |
if ($env{'form.firsturl'} ne '') { |
if ($env{'form.firsturl'} ne '') { |
Line 952 HEADER
|
Line 727 HEADER
|
} |
} |
$querystring = &HTML::Entities::encode($querystring,"'"); |
$querystring = &HTML::Entities::encode($querystring,"'"); |
} |
} |
if ($env{'form.ltoken'} ne '') { |
|
$querystring .= (($querystring eq '')?'':'&') . 'ltoken='. |
|
&HTML::Entities::encode(&uri_escape($env{'form.ltoken'})); |
|
} elsif ($env{'form.linkkey'}) { |
|
$querystring .= (($querystring eq '')?'':'&') . 'linkkey='. |
|
&HTML::Entities::encode(&uri_escape($env{'form.linkkey'})); |
|
} |
|
if ($querystring ne '') { |
if ($querystring ne '') { |
$ssologin .= (($ssologin=~/\?/)?'&':'?') . $querystring; |
$ssologin .= (($ssologin=~/\?/)?'&':'?') . $querystring; |
$querystr_for_js = &js_escape($querystring); |
|
} |
} |
} elsif ($logtoken ne '') { |
} elsif ($logtoken ne '') { |
$ssologin .= (($ssologin=~/\?/)?'&':'?') . 'logtoken='.$logtoken; |
$ssologin .= (($ssologin=~/\?/)?'&':'?') . 'logtoken='.$logtoken; |
$querystr_for_js = &js_escape('logtoken='.$logtoken); |
|
} |
} |
my $ssohref; |
my $ssohref; |
if ($samlwindow) { |
|
$sso_onclick = <<"ENDJS"; |
|
if (document.getElementById('LC_sso_login_link')) { |
|
var ssoelem = document.getElementById('LC_sso_login_link') |
|
ssoelem.addEventListener('click',samlWinFunction,false); |
|
var windows = {}; |
|
function samlWinFunction(evt) { |
|
evt.preventDefault(); |
|
var url = '$ssologin_for_js'; |
|
var name = 'lcssowin'; |
|
var querystr = '$querystr_for_js'; |
|
if (querystr) { |
|
url += '?'+querystr+'&lcssowin=1'; |
|
} else { |
|
url += '?lcssowin=1'; |
|
} |
|
if ((typeof windows[name] !== 'undefined') && (!windows[name].closed)) { |
|
windows[name].close(); |
|
} |
|
windows[name]=window.open(url,name,'width=350,height=600'); |
|
windows[name].focus(); |
|
return false; |
|
} |
|
} |
|
ENDJS |
|
} |
|
if ($samlssoimg ne '') { |
if ($samlssoimg ne '') { |
$ssohref = '<a href="'.$ssologin.'" title="'.$samltooltip.'" id="LC_sso_login_link">'. |
$ssohref = '<a href="'.$ssologin.'" title="'.$samltooltip.'">'. |
'<img src="'.$samlssoimg.'" alt="'.$samlssoalt.'" id="lcssobutton" /></a>'; |
'<img src="'.$samlssoimg.'" alt="'.$samlssoalt.'" id="lcssobutton" /></a>'; |
} else { |
} else { |
$ssohref = '<a href="'.$ssologin.'" id="LC_sso_login_link">'.$samlssotext.'</a>'; |
$ssohref = '<a href="'.$ssologin.'">'.$samlssotext.'</a>'; |
} |
} |
if (($env{'form.saml'} eq 'no') || |
if (($env{'form.saml'} eq 'no') || |
(($env{'form.username'} ne '') && ($env{'form.domain'} ne ''))) { |
(($env{'form.username'} ne '') && ($env{'form.domain'} ne ''))) { |
Line 1024 $coursecatalog
|
Line 764 $coursecatalog
|
</div> |
</div> |
</div> |
</div> |
ENDSAML |
ENDSAML |
} else { |
|
if ($env{'form.ltoken'}) { |
|
&Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
delete($env{'form.ltoken'}); |
|
} |
|
} |
|
my $in_frame_js; |
|
if ($linkprot_for_login) { |
|
my ($linkprotector,$linkproturi) = split(/:/,$linkprot_for_login,2); |
|
if (($linkprotector =~ /^\d+(c|d)$/) && ($linkproturi =~ m{^/+tiny/+$LONCAPA::match_domain/+\w+$})) { |
|
my $set_target; |
|
if (($env{'form.retry'}) || ($env{'form.sso'})) { |
|
if ($linkproturi eq $env{'form.firsturl'}) { |
|
$set_target = " document.server.target = '_self';"; |
|
} |
|
} else { |
|
$set_target = <<ENDTARG; |
|
var linkproturi = '$linkproturi'; |
|
var path = document.location.pathname.replace( new RegExp('^/adm/launch'),''); |
|
if (linkproturi == path) { |
|
document.server.target = '_self'; |
|
} |
|
ENDTARG |
|
} |
|
$in_frame_js = <<ENDJS; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
if ((window.self !== window.top) && (document.server.target != '_self')) { |
|
$set_target |
|
$sso_onclick |
|
} |
|
// ]]> |
|
</script> |
|
ENDJS |
|
} |
|
} elsif ($samlwindow) { |
|
$in_frame_js = <<ENDJS; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
if ((window.self !== window.top) && (document.server.target != '_self')) { |
|
$sso_onclick |
|
} |
|
// ]]> |
|
</script> |
|
ENDJS |
|
} |
} |
|
|
$r->print(<<ENDLOGIN); |
$r->print(<<ENDLOGIN); |
Line 1170 $versionrow
|
Line 865 $versionrow
|
<br style="clear:both;" /> |
<br style="clear:both;" /> |
</div> |
</div> |
|
|
$in_frame_js |
|
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
// the if prevents the script error if the browser can not handle this |
// the if prevents the script error if the browser can not handle this |
Line 1263 sub redirect_page {
|
Line 957 sub redirect_page {
|
$path = '/'.$path; |
$path = '/'.$path; |
} |
} |
my $url = $protocol.'://'.$hostname.$path; |
my $url = $protocol.'://'.$hostname.$path; |
my $args = {}; |
if ($env{'form.firsturl'} ne '') { |
if ($env{'form.firsturl'} =~ m{^/tiny/$match_domain/\w+$}) { |
|
$url = $protocol.'://'.$hostname.$env{'form.firsturl'}; |
|
if (($env{'form.ltoken'}) || ($env{'form.linkprot'} ne '') || |
|
($env{'form.linkkey'} ne '')) { |
|
my %link_info; |
|
if ($env{'form.ltoken'}) { |
|
%link_info = &Apache::lonnet::tmpget($env{'form.ltoken'}); |
|
&Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
$args->{'only_body'} = 1; |
|
} elsif ($env{'form.linkprot'}) { |
|
$link_info{'linkprot'} = $env{'form.linkprot'}; |
|
foreach my $item ('linkprotuser','linkprotexit','linkprotpbid','linkprotpburl') { |
|
if ($env{'form.'.$item}) { |
|
$link_info{$item} = $env{'form.'.$item}; |
|
} |
|
} |
|
$args->{'only_body'} = 1; |
|
} elsif ($env{'form.linkkey'} ne '') { |
|
$link_info{'linkkey'} = $env{'form.linkkey'}; |
|
} |
|
my $token = &Apache::lonnet::tmpput(\%link_info,$desthost,'link'); |
|
unless (($token eq 'con_lost') || ($token eq 'refused') || |
|
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
|
$url .= '?ltoken='.$token; |
|
} |
|
} |
|
} else { |
|
my $querystring; |
my $querystring; |
if ($env{'form.firsturl'} ne '') { |
if ($env{'form.firsturl'} =~ /[^\x00-\xFF]/) { |
if ($env{'form.firsturl'} =~ /[^\x00-\xFF]/) { |
$querystring = &uri_escape_utf8($env{'form.firsturl'}); |
$querystring = &uri_escape_utf8($env{'form.firsturl'}); |
} else { |
} else { |
$querystring = &uri_escape($env{'form.firsturl'}); |
$querystring = &uri_escape($env{'form.firsturl'}); |
|
} |
|
$querystring = &HTML::Entities::encode($querystring,"'"); |
|
$querystring = '?firsturl='.$querystring; |
|
} |
|
if ($env{'form.ltoken'}) { |
|
my %link_info = &Apache::lonnet::tmpget($env{'form.ltoken'}); |
|
&Apache::lonnet::tmpdel($env{'form.ltoken'}); |
|
my $token = &Apache::lonnet::tmpput(\%link_info,$desthost,'link'); |
|
unless (($token eq 'con_lost') || ($token eq 'refused') || ($token =~ /^error:/) || |
|
($token eq 'unknown_cmd') || ($token eq 'no_such_host')) { |
|
unless (($path eq '/adm/roles') || ($path eq '/adm/login')) { |
|
$url = $protocol.'://'.$hostname.'/adm/roles'; |
|
} |
|
$querystring .= (($querystring =~/^\?/)?'&':'?') . 'ttoken='.$token; |
|
} |
|
} |
} |
$url .= $querystring; |
$querystring = &HTML::Entities::encode($querystring,"'"); |
|
$url .='?firsturl='.$querystring; |
} |
} |
$args->{'redirect'} = [0,$url,'','',1]; |
my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef, |
my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef,$args); |
{'redirect' => [0,$url],'',1}); |
my $end_page = &Apache::loncommon::end_page(); |
my $end_page = &Apache::loncommon::end_page(); |
return $start_page.$end_page; |
return $start_page.$end_page; |
} |
} |