version 1.156, 2018/12/26 20:10:21
|
version 1.159, 2020/03/15 23:04:10
|
Line 46 use Digest::MD5;
|
Line 46 use Digest::MD5;
|
# ------------------------------------------------------------ Successful login
|
# ------------------------------------------------------------ Successful login
|
sub success {
|
sub success {
|
my ($r, $username, $domain, $authhost, $lowerurl, $extra_env,
|
my ($r, $username, $domain, $authhost, $lowerurl, $extra_env,
|
$form,$skipcritical) = @_;
|
$form,$skipcritical,$cid) = @_;
|
|
|
# ------------------------------------------------------------ Get cookie ready
|
# ------------------------------------------------------------ Get cookie ready
|
my $cookie =
|
my $cookie =
|
Line 108 sub success {
|
Line 108 sub success {
|
}
|
}
|
$r->send_http_header;
|
$r->send_http_header;
|
if (ref($form) eq 'HASH') {
|
if (ref($form) eq 'HASH') {
|
|
$form->{'lti.login'} = $env{'request.lti.login'};
|
$form->{'lti.reqcrs'} = $env{'request.lti.reqcrs'};
|
$form->{'lti.reqcrs'} = $env{'request.lti.reqcrs'};
|
$form->{'lti.reqrole'} = $env{'request.lti.reqrole'};
|
$form->{'lti.reqrole'} = $env{'request.lti.reqrole'};
|
$form->{'lti.sourcecrs'} = $env{'request.lti.sourcecrs'};
|
$form->{'lti.sourcecrs'} = $env{'request.lti.sourcecrs'};
|
Line 147 sub success {
|
Line 148 sub success {
|
}
|
}
|
if (defined($form->{symb})) {
|
if (defined($form->{symb})) {
|
my $destsymb = $form->{symb};
|
my $destsymb = $form->{symb};
|
|
my $encrypted;
|
|
if ($destsymb =~ m{^/enc/}) {
|
|
$encrypted = 1;
|
|
if ($cid) {
|
|
$destsymb = &Apache::lonenc::unencrypted($destsymb,$cid);
|
|
}
|
|
}
|
$destination .= ($destination =~ /\?/) ? '&' : '?';
|
$destination .= ($destination =~ /\?/) ? '&' : '?';
|
if ($destsymb =~ /___/) {
|
if ($destsymb =~ /___/) {
|
# FIXME Need to deal with encrypted symbs and urls as needed.
|
|
my ($map,$resid,$desturl)=split(/___/,$destsymb);
|
my ($map,$resid,$desturl)=split(/___/,$destsymb);
|
$desturl = &Apache::lonnet::clutter($desturl);
|
$desturl = &Apache::lonnet::clutter($desturl);
|
|
if ($encrypted) {
|
|
$desturl = &Apache::lonenc::encrypted($desturl,1,$cid);
|
|
$destsymb = $form->{symb};
|
|
}
|
$desturl = &HTML::Entities::encode($desturl,'"<>&');
|
$desturl = &HTML::Entities::encode($desturl,'"<>&');
|
$destsymb = &HTML::Entities::encode($destsymb,'"<>&');
|
$destsymb = &HTML::Entities::encode($destsymb,'"<>&');
|
$destination .= 'destinationurl='.$desturl.
|
$destination .= 'destinationurl='.$desturl.
|
'&destsymb='.$destsymb;
|
'&destsymb='.$destsymb;
|
} else {
|
} elsif (!$encrypted) {
|
$destsymb = &HTML::Entities::encode($destsymb,'"<>&');
|
$destsymb = &HTML::Entities::encode($destsymb,'"<>&');
|
$destination .= 'destinationurl='.$destsymb;
|
$destination .= 'destinationurl='.$destsymb;
|
}
|
}
|
Line 302 sub failed {
|
Line 313 sub failed {
|
my $firsturl = &Apache::loncommon::cleanup_html($form->{firsturl});
|
my $firsturl = &Apache::loncommon::cleanup_html($form->{firsturl});
|
if ($firsturl ne '') {
|
if ($firsturl ne '') {
|
$retry .= (($retry=~/\?/)?'&':'?').'firsturl='.$firsturl;
|
$retry .= (($retry=~/\?/)?'&':'?').'firsturl='.$firsturl;
|
|
if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) {
|
|
unless (exists($form->{linkprot})) {
|
|
if (exists($form->{linkkey})) {
|
|
$retry .= 'linkkey='.$form->{linkkey};
|
|
}
|
|
}
|
|
}
|
}
|
}
|
}
|
}
|
if (exists($form->{linkprot})) {
|
if (exists($form->{linkprot})) {
|
Line 374 sub handler {
|
Line 392 sub handler {
|
my $dest = '/adm/roles';
|
my $dest = '/adm/roles';
|
if ($env{'form.firsturl'} ne '') {
|
if ($env{'form.firsturl'} ne '') {
|
$dest = $env{'form.firsturl'};
|
$dest = $env{'form.firsturl'};
|
|
if ($env{'form.firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
|
|
&Apache::lonnet::appenv({'request.deeplink.login' => $env{'form.firsturl'}});
|
|
}
|
}
|
}
|
$r->print(
|
$r->print(
|
$start_page
|
$start_page
|
Line 445 sub handler {
|
Line 466 sub handler {
|
return OK;
|
return OK;
|
}
|
}
|
|
|
my ($key,$firsturl,$rolestr,$symbstr,$iptokenstr,$linkprotstr)=split(/&/,$tmpinfo);
|
my ($key,$firsturl,$rolestr,$symbstr,$iptokenstr,$linkstr)=split(/&/,$tmpinfo);
|
if ($rolestr) {
|
if ($rolestr) {
|
$rolestr = &unescape($rolestr);
|
$rolestr = &unescape($rolestr);
|
}
|
}
|
Line 455 sub handler {
|
Line 476 sub handler {
|
if ($iptokenstr) {
|
if ($iptokenstr) {
|
$iptokenstr = &unescape($iptokenstr);
|
$iptokenstr = &unescape($iptokenstr);
|
}
|
}
|
if ($linkprotstr) {
|
if ($linkstr) {
|
$linkprotstr = &unescape($linkprotstr);
|
$linkstr = &unescape($linkstr);
|
}
|
}
|
if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) {
|
if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) {
|
$form{'firsturl'} = $firsturl;
|
$form{'firsturl'} = $firsturl;
|
Line 470 sub handler {
|
Line 491 sub handler {
|
if ($iptokenstr =~ /^iptoken=/) {
|
if ($iptokenstr =~ /^iptoken=/) {
|
(undef,$form{'iptoken'}) = split('=',$iptokenstr);
|
(undef,$form{'iptoken'}) = split('=',$iptokenstr);
|
}
|
}
|
if ($linkprotstr =~ /^linkprot=/) {
|
if ($linkstr =~ /^linkprot=/) {
|
(undef,$form{'linkprot'}) = split('=',$linkprotstr);
|
(undef,$form{'linkprot'}) = split('=',$linkstr);
|
|
} elsif ($linkstr =~ /^linkkey=/) {
|
|
(undef,$form{'linkkey'}) = split('=',$linkstr);
|
}
|
}
|
|
|
my $upass = $ENV{HTTPS} ? $form{'upass0'}
|
my $upass = $ENV{HTTPS} ? $form{'upass0'}
|
Line 655 sub handler {
|
Line 678 sub handler {
|
}
|
}
|
if ($form{'linkprot'}) {
|
if ($form{'linkprot'}) {
|
$env{'request.linkprot'} = $form{'linkprot'};
|
$env{'request.linkprot'} = $form{'linkprot'};
|
|
} elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
|
|
if ($form{'linkkey'}) {
|
|
$env{'request.linkkey'} = $form{'linkkey'};
|
|
}
|
|
$env{'request.deeplink.login'} = $form{'firsturl'};
|
}
|
}
|
$r->internal_redirect($switchto);
|
$r->internal_redirect($switchto);
|
} else {
|
} else {
|
Line 679 sub handler {
|
Line 707 sub handler {
|
}
|
}
|
if ($form{'linkprot'}) {
|
if ($form{'linkprot'}) {
|
$env{'request.linkprot'} = $form{'linkprot'};
|
$env{'request.linkprot'} = $form{'linkprot'};
|
|
} elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
|
|
if ($form{'linkkey'}) {
|
|
$env{'request.linkkey'} = $form{'linkkey'};
|
|
}
|
|
$env{'request.deeplink.login'} = $form{'firsturl'};
|
|
|
}
|
}
|
$r->internal_redirect($switchto);
|
$r->internal_redirect($switchto);
|
} else {
|
} else {
|
Line 711 sub handler {
|
Line 745 sub handler {
|
undef,\%form);
|
undef,\%form);
|
if ($form{'linkprot'}) {
|
if ($form{'linkprot'}) {
|
$env{'request.linkprot'} = $form{'linkprot'};
|
$env{'request.linkprot'} = $form{'linkprot'};
|
|
} elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
|
|
if ($form{'linkkey'}) {
|
|
$env{'request.linkkey'} = $form{'linkkey'};
|
|
}
|
|
$env{'request.deeplink.login'} = $form{'firsturl'};
|
}
|
}
|
$r->internal_redirect('/adm/switchserver?otherserver='.$unloaded.'&origurl='.$firsturl);
|
$r->internal_redirect('/adm/switchserver?otherserver='.$unloaded.'&origurl='.$firsturl);
|
return OK;
|
return OK;
|
Line 726 sub handler {
|
Line 765 sub handler {
|
$extra_env = {'user.linkprotector' => $linkprotector,
|
$extra_env = {'user.linkprotector' => $linkprotector,
|
'user.linkproturi' => $uri,};
|
'user.linkproturi' => $uri,};
|
}
|
}
|
|
} elsif ($form{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
|
|
if ($form{'linkkey'}) {
|
|
$extra_env = {'user.deeplinkkey' => $form{'linkkey'},
|
|
'user.keyedlinkuri' => $form{'firsturl'},
|
|
'request.deeplink.login' => $form{'firsturl'}};
|
|
} else {
|
|
$extra_env = {'request.deeplink.login' => $form{'firsturl'}};
|
|
}
|
}
|
}
|
&success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,$extra_env,
|
&success($r,$form{'uname'},$form{'udom'},$authhost,$firsturl,$extra_env,
|
\%form);
|
\%form);
|
Line 793 sub check_can_host {
|
Line 840 sub check_can_host {
|
$form);
|
$form);
|
if ($form->{'linkprot'}) {
|
if ($form->{'linkprot'}) {
|
$env{'request.linkprot'} = $form->{'linkprot'};
|
$env{'request.linkprot'} = $form->{'linkprot'};
|
|
} elsif ($form->{'firsturl'} =~ m{^/tiny/$match_domain/\w+$}) {
|
|
if ($form->{'linkkey'}) {
|
|
$env{'request.linkkey'} = $form->{'linkkey'};
|
|
}
|
|
$env{'request.deeplink.login'} = $form->{'firsturl'};
|
}
|
}
|
my ($otherserver) = &Apache::lonnet::choose_server($udom);
|
my ($otherserver) = &Apache::lonnet::choose_server($udom);
|
$r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);
|
$r->internal_redirect('/adm/switchserver?otherserver='.$otherserver);
|