Diff for /loncom/auth/lonacc.pm between versions 1.203 and 1.206

version 1.203, 2022/06/18 02:10:18 version 1.206, 2022/08/24 20:58:50
Line 315  sub sso_login { Line 315  sub sso_login {
     my %form;      my %form;
     if ($query) {      if ($query) {
         my @items = ('role','symb','iptoken','origurl','ttoken',          my @items = ('role','symb','iptoken','origurl','ttoken',
                      'ltoken','linkkey','logtoken','sso');                       'ltoken','linkkey','logtoken','sso','lcssowin');
         &Apache::loncommon::get_unprocessed_cgi($query,\@items);          &Apache::loncommon::get_unprocessed_cgi($query,\@items);
         foreach my $item (@items) {          foreach my $item (@items) {
             if (defined($env{'form.'.$item})) {              if (defined($env{'form.'.$item})) {
Line 333  sub sso_login { Line 333  sub sso_login {
         }          }
     }      }
   
     my ($linkprot,$linkprotuser,$linkkey,$deeplinkurl);      my ($linkprot,$linkprotuser,$linkprotexit,$linkkey,$deeplinkurl);
   
 #  #
 # If Shibboleth auth is in use, and a dual SSO and non-SSO login page  # If Shibboleth auth is in use, and a dual SSO and non-SSO login page
Line 372  sub sso_login { Line 372  sub sso_login {
         if ($info{'linkprot'}) {          if ($info{'linkprot'}) {
             $linkprot = $info{'linkprot'};              $linkprot = $info{'linkprot'};
             $linkprotuser = $info{'linkprotuser'};              $linkprotuser = $info{'linkprotuser'};
               $linkprotexit = $info{'linkprotexit'};
         } elsif ($info{'linkkey'} ne '') {          } elsif ($info{'linkkey'} ne '') {
             $linkkey = $info{'linkkey'};              $linkkey = $info{'linkkey'};
         }          }
Line 397  sub sso_login { Line 398  sub sso_login {
             if ($form{'linkprot'}) {              if ($form{'linkprot'}) {
                 $linkprot = $form{'linkprot'};                  $linkprot = $form{'linkprot'};
                 $linkprotuser = $form{'linkprotuser'};                  $linkprotuser = $form{'linkprotuser'};
                   $linkprotexit = $form{'linkprotexit'};
             } elsif ($form{'linkkey'} ne '') {              } elsif ($form{'linkkey'} ne '') {
                 $linkkey = $form{'linkkey'};                  $linkkey = $form{'linkkey'};
             }              }
Line 425  sub sso_login { Line 427  sub sso_login {
             if ($form{'linkprot'}) {              if ($form{'linkprot'}) {
                 $linkprot = $form{'linkprot'};                  $linkprot = $form{'linkprot'};
                 $linkprotuser = $form{'linkprotuser'};                  $linkprotuser = $form{'linkprotuser'};
                   $linkprotexit = $form{'linkprotexit'};
             } elsif ($form{'linkkey'} ne '') {              } elsif ($form{'linkkey'} ne '') {
                 $linkkey = $form{'linkkey'};                  $linkkey = $form{'linkkey'};
             }              }
Line 432  sub sso_login { Line 435  sub sso_login {
     } elsif ($form{'ltoken'}) {      } elsif ($form{'ltoken'}) {
         my %link_info = &Apache::lonnet::tmpget($form{'ltoken'});          my %link_info = &Apache::lonnet::tmpget($form{'ltoken'});
         $linkprot = $link_info{'linkprot'};          $linkprot = $link_info{'linkprot'};
         if (($linkprot) && ($link_info{'linkprotuser'} ne '')) {          if ($linkprot) {
             $linkprotuser = $link_info{'linkprotuser'};                  if ($link_info{'linkprotuser'} ne '') {
                   $linkprotuser = $link_info{'linkprotuser'};
               }
               if ($link_info{'linkprotexit'} ne '') {
                   $linkprotexit = $link_info{'linkprotexit'};
               }
         }          }
         my $delete = &Apache::lonnet::tmpdel($form{'ltoken'});          my $delete = &Apache::lonnet::tmpdel($form{'ltoken'});
         delete($form{'ltoken'});          delete($form{'ltoken'});
Line 455  sub sso_login { Line 463  sub sso_login {
                            origurl => $deeplinkurl,                             origurl => $deeplinkurl,
                            linkprot => $linkprot,                             linkprot => $linkprot,
                            linkprotuser => $linkprotuser,                             linkprotuser => $linkprotuser,
                              linkprotexit => $linkprotexit,
                        );                         );
               if ($env{'form.lcssowin'}) {
                   $data{'lcssowin'} = $env{'form.lcssowin'};
               }
             my $token = &Apache::lonnet::tmpput(\%data,$r->dir_config('lonHostID'),'link');              my $token = &Apache::lonnet::tmpput(\%data,$r->dir_config('lonHostID'),'link');
             unless (($token eq 'con_lost') || ($token eq 'refused') || ($token =~ /^error:/) ||              unless (($token eq 'con_lost') || ($token eq 'refused') || ($token =~ /^error:/) ||
                     ($token eq 'unknown_cmd') || ($token eq 'no_such_host')) {                      ($token eq 'unknown_cmd') || ($token eq 'no_such_host')) {
Line 521  sub sso_login { Line 533  sub sso_login {
                     if ($linkprotuser ne '') {                      if ($linkprotuser ne '') {
                         $env{'request.linkprotuser'} = $linkprotuser;                          $env{'request.linkprotuser'} = $linkprotuser;
                     }                      }
                       if ($linkprotexit ne '') {
                           $env{'request.linkprotexit'} = $linkprotexit;
                       }
                 } elsif ($linkkey ne '') {                  } elsif ($linkkey ne '') {
                     $env{'request.linkkey'} = $linkkey;                      $env{'request.linkkey'} = $linkkey;
                 }                  }
Line 534  sub sso_login { Line 549  sub sso_login {
             if ($otherserver ne '') {              if ($otherserver ne '') {
                 $redirecturl .= '?otherserver='.$otherserver;                  $redirecturl .= '?otherserver='.$otherserver;
             }              }
               if ($form{'lcssowin'}) {
                   $redirecturl .= (($redirecturl=~/\?/)?'&':'?') . 'lcssowin=1';
               }
     $r->internal_redirect($redirecturl);      $r->internal_redirect($redirecturl);
     $r->set_handlers('PerlHandler'=> undef);      $r->set_handlers('PerlHandler'=> undef);
  } else {   } else {
Line 546  sub sso_login { Line 564  sub sso_login {
       'server'    => $r->dir_config('lonHostID'),        'server'    => $r->dir_config('lonHostID'),
       'sso.login' => 1        'sso.login' => 1
       );        );
             foreach my $item ('role','symb','iptoken','origurl') {              foreach my $item ('role','symb','iptoken','origurl','lcssowin') {
                 if (exists($form{$item})) {                  if (exists($form{$item})) {
                     $info{$item} = $form{$item};                      $info{$item} = $form{$item};
                 } elsif ($sessiondata{$item} ne '') {                  } elsif ($sessiondata{$item} ne '') {
Line 566  sub sso_login { Line 584  sub sso_login {
             if ($info{'deeplink.login'}) {              if ($info{'deeplink.login'}) {
                 if ($linkprot) {                  if ($linkprot) {
                     $info{'linkprot'} = $linkprot;                      $info{'linkprot'} = $linkprot;
                       if ($linkprotuser ne '') {
                           $info{'linkprotuser'} = $linkprotuser;
                       }
                       if ($linkprotexit ne '') {
                           $info{'linkprotexit'} = $linkprotexit;
                       }
                 } elsif ($linkkey ne '') {                  } elsif ($linkkey ne '') {
                     $info{'linkkey'} = $linkkey;                      $info{'linkkey'} = $linkkey;
                 }                  }
Line 606  sub sso_login { Line 630  sub sso_login {
             $r->subprocess_env->set('SSOUserDomain' => $domain);              $r->subprocess_env->set('SSOUserDomain' => $domain);
             if (grep(/^sso$/,@cancreate)) {              if (grep(/^sso$/,@cancreate)) {
 #FIXME - need to preserve origurl, role and symb, or linkprot or linkkey for use after account  #FIXME - need to preserve origurl, role and symb, or linkprot or linkkey for use after account
 # creation  # creation. If lcssowin is 1, createaccount needs to close pop-up and display in main window.
                 $r->set_handlers('PerlHandler'=> [\&Apache::createaccount::handler]);                  $r->set_handlers('PerlHandler'=> [\&Apache::createaccount::handler]);
                 $r->handler('perl-script');                  $r->handler('perl-script');
             } else {              } else {
Line 777  sub handler { Line 801  sub handler {
                 &Apache::loncommon::get_unprocessed_cgi($r->args,['ttoken']);                  &Apache::loncommon::get_unprocessed_cgi($r->args,['ttoken']);
                 if (defined($env{'form.ttoken'})) {                  if (defined($env{'form.ttoken'})) {
                     my %info = &Apache::lonnet::tmpget($env{'form.ttoken'});                      my %info = &Apache::lonnet::tmpget($env{'form.ttoken'});
                     if (($info{'linkprotuser'} ne '') && ($info{'origurl'} ne '')) {                      if (($info{'origurl'} ne '') && ($info{'origurl'} eq $requrl)) {
                         if (($info{'linkprot'}) && ($info{'origurl'} eq $requrl) &&                          my %data;
                           if (($info{'linkprotuser'} ne '') && ($info{'linkprot'}) &&
                             ($info{'linkprotuser'} ne $env{'user.name'}.':'.$env{'user.domain'})) {                              ($info{'linkprotuser'} ne $env{'user.name'}.':'.$env{'user.domain'})) {
                             my %data = (                              %data = (
                                 origurl => $requrl,                                  origurl => $requrl,
                                 linkprot => $info{'linkprot'},                                  linkprot => $info{'linkprot'},
                                 linkprotuser => $info{'linkprotuser'},                                  linkprotuser => $info{'linkprotuser'},
                                   linkprotexit => $info{'linkprotexit'},
                             );                              );
                           } elsif ($info{'ltoken'} ne '') {
                               my %ltoken_info = &Apache::lonnet::tmpget($info{'ltoken'});
                               if (($ltoken_info{'linkprotuser'} ne '') && ($ltoken_info{'linkprot'}) &&
                                   ($ltoken_info{'linkprotuser'} ne $env{'user.name'}.':'.$env{'user.domain'})) {
                                   %data = (
                                       origurl => $requrl,
                                       linkprot => $ltoken_info{'linkprot'},
                                       linkprotuser => $ltoken_info{'linkprotuser'},
                                       linkprotexit => $ltoken_info{'linkprotexit'},
                                   );
                               }
                           }
                           if (keys(%data)) {
                               my $delete = &Apache::lonnet::tmpdel($env{'form.ttoken'});
                               if ($info{'ltoken'} ne '') {
                                   my $delete = &Apache::lonnet::tmpdel($info{'ltoken'});
                               }
                             my $token =                              my $token =
                                 &Apache::lonnet::tmpput(\%data,$r->dir_config('lonHostID'),'retry');                                  &Apache::lonnet::tmpput(\%data,$r->dir_config('lonHostID'),'retry');
                             unless (($token eq 'con_lost') || ($token eq 'refused') || ($token =~ /^error:/) ||                              unless (($token eq 'con_lost') || ($token eq 'refused') || ($token =~ /^error:/) ||

Removed from v.1.203  
changed lines
  Added in v.1.206


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>