--- loncom/auth/lonacc.pm 2021/10/26 14:17:21 1.198 +++ loncom/auth/lonacc.pm 2021/10/26 15:52:54 1.199 @@ -1,7 +1,7 @@ # The LearningOnline Network # Cookie Based Access Handler # -# $Id: lonacc.pm,v 1.198 2021/10/26 14:17:21 raeburn Exp $ +# $Id: lonacc.pm,v 1.199 2021/10/26 15:52:54 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -305,7 +305,7 @@ sub sso_login { my $query = $r->args; my %form; if ($query) { - my @items = ('role','symb','iptoken','origurl','ltoken','linkkey'); + my @items = ('role','symb','iptoken','origurl','ltoken','linkkey','logtoken'); &Apache::loncommon::get_unprocessed_cgi($query,\@items); foreach my $item (@items) { if (defined($env{'form.'.$item})) { @@ -324,6 +324,20 @@ sub sso_login { } my ($linkprot,$linkkey); + if ($form{'logtoken'}) { + my ($firsturl,@rest); + my $lonhost = $r->dir_config('lonHostID'); + my $tmpinfo = &Apache::lonnet::reply('tmpget:'.$form{'logtoken'},$lonhost); + my $delete = &Apache::lonnet::tmpdel($form{'logtoken'}); + (undef,$firsturl,@rest) = split(/&/,$tmpinfo); + foreach my $item (@rest) { + my ($key,$value) = split(/=/,$item); + $form{$key} = &unescape($value); + } + if ($firsturl =~ m{^/tiny/$match_domain/\w+$}) { + $form{'origurl'} = $firsturl; + } + } if ($form{'ltoken'}) { my %link_info = &Apache::lonnet::tmpget($form{'ltoken'}); $linkprot = $link_info{'linkprot'};