version 1.201, 2022/06/30 21:04:13
|
version 1.204, 2022/09/17 23:38:50
|
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{'mailrecipient'} = &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 664 function enableInput() {
|
Line 703 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 685 ENDSCRIPT
|
Line 725 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 872 HEADER
|
Line 913 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 882 HEADER
|
Line 924 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 902 HEADER
|
Line 946 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 966 ENDTARG
|
Line 1038 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);
|