version 1.158.2.13.2.6, 2022/07/08 15:43:51
|
version 1.158.2.13.2.9, 2023/02/03 23:11:31
|
Line 50 sub handler {
|
Line 50 sub handler {
|
$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','ltoken','ttoken','linkkey', |
'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 175 sub handler {
|
Line 175 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')) { |
Line 228 sub handler {
|
Line 241 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 339 sub handler {
|
Line 357 sub handler {
|
if ($env{'form.ltoken'}) { |
if ($env{'form.ltoken'}) { |
my $delete = &Apache::lonnet::tmpdel($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 464 sub handler {
|
Line 493 sub handler {
|
|
|
# -------------------------------------------------------- Store away log token |
# -------------------------------------------------------- Store away log token |
my ($tokenextras,$tokentype,$linkprot_for_login); |
my ($tokenextras,$tokentype,$linkprot_for_login); |
my @names = ('role','symb','iptoken','ltoken','linkprotuser','linkprotexit','linkprot','linkkey'); |
my @names = ('role','symb','iptoken','ltoken','linkprotuser','linkprotexit','linkprot','linkkey','display'); |
foreach my $name (@names) { |
foreach my $name (@names) { |
if ($env{'form.'.$name} ne '') { |
if ($env{'form.'.$name} ne '') { |
if ($name eq 'ltoken') { |
if ($name eq 'ltoken') { |
Line 480 sub handler {
|
Line 509 sub handler {
|
$tokentype = 'link'; |
$tokentype = 'link'; |
last; |
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 { |
} else { |
$tokenextras .= '&'.$name.'='.&escape($env{'form.'.$name}); |
$tokenextras .= '&'.$name.'='.&escape($env{'form.'.$name}); |
if (($name eq 'linkkey') || ($name eq 'linkprot')) { |
if (($name eq 'linkkey') || ($name eq 'linkprot')) { |
Line 659 function enableInput() {
|
Line 698 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 680 ENDSCRIPT
|
Line 720 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 867 HEADER
|
Line 908 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 877 HEADER
|
Line 919 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 897 HEADER
|
Line 941 HEADER
|
} |
} |
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.'">'. |
$ssohref = '<a href="'.$ssologin.'" title="'.$samltooltip.'" id="LC_sso_login_link">'. |
'<img src="'.$samlssoimg.'" alt="'.$samlssoalt.'" id="lcssobutton" /></a>'; |
'<img src="'.$samlssoimg.'" alt="'.$samlssoalt.'" id="lcssobutton" /></a>'; |
} else { |
} else { |
$ssohref = '<a href="'.$ssologin.'">'.$samlssotext.'</a>'; |
$ssohref = '<a href="'.$ssologin.'" id="LC_sso_login_link">'.$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 961 ENDTARG
|
Line 1033 ENDTARG
|
// <![CDATA[ |
// <![CDATA[ |
if ((window.self !== window.top) && (document.server.target != '_self')) { |
if ((window.self !== window.top) && (document.server.target != '_self')) { |
$set_target |
$set_target |
|
$sso_onclick |
} |
} |
// ]]> |
// ]]> |
</script> |
</script> |
ENDJS |
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); |