[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /auth migrateuser.pm

raeburn raeburn at source.lon-capa.org
Sun Dec 12 13:34:48 EST 2021


raeburn		Sun Dec 12 18:34:48 2021 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/auth	migrateuser.pm 
  Log:
  - For 2.11
    Backport 1.50 (part), 1.54 (part), 1.55
  
  
Index: loncom/auth/migrateuser.pm
diff -u loncom/auth/migrateuser.pm:1.25.2.4 loncom/auth/migrateuser.pm:1.25.2.5
--- loncom/auth/migrateuser.pm:1.25.2.4	Mon Jan  4 03:52:32 2021
+++ loncom/auth/migrateuser.pm	Sun Dec 12 18:34:48 2021
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Starts a user off based of an existing token.
 #
-# $Id: migrateuser.pm,v 1.25.2.4 2021/01/04 03:52:32 raeburn Exp $
+# $Id: migrateuser.pm,v 1.25.2.5 2021/12/12 18:34:48 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -30,7 +30,7 @@
 
 use strict;
 use LONCAPA qw(:DEFAULT :match);
-use Apache::Constants qw(:common :http :methods);
+use Apache::Constants qw(:common :http :methods :remotehost);
 use Apache::lonauth;
 use Apache::lonnet;
 use Apache::lonlocal;
@@ -161,6 +161,8 @@
                 if ($hostname) {
                     my $protocol = $Apache::lonnet::protocol{$switchto};
                     $protocol = 'http' if ($protocol ne 'https');
+                    my $alias = &Apache::lonnet::use_proxy_alias($r,$switchto);
+                    $hostname = $alias if ($alias ne '');
                     $url = $protocol.'://'.$hostname;
                     if ($rule_in_effect eq 'balancer') {
                         $message .= '<br />'.
@@ -189,19 +191,17 @@
         my %info= (
                     'domain'          => $udom,
                     'username'        => $dataref->{'username'},
-                    'role'            => $dataref->{'role'},
                     'sessionserver'   => $lonhost,
                   );
-        if ($dataref->{'origurl'}) {
-            $info{'origurl'} = $dataref->{'origurl'};
-        }
-        if ($dataref->{'symb'}) {
-            $info{'symb'} = $dataref->{'symb'};
+        my @names = ('origurl','symb','role');
+        foreach my $name (@names) {
+            if ($dataref->{$name} ne '') {
+                $info{$name} = $dataref->{$name};
+            }
         }
-        my $iptoken = &Apache::lonnet::tmpput(\%info,$switchto);
+        my $iptoken = &Apache::lonnet::tmpput(\%info,$switchto,'link');
         unless ($iptoken eq 'conlost') {
-            $url .= ($url =~ /\?/) ? '&' : '?';
-            $url .= 'iptoken='.$iptoken;
+            $url .= (($url =~ /\?/) ? '&' : '?') . 'iptoken='.$iptoken;
         }
         $r->print(&Apache::loncommon::start_page($title,undef,
                                                  {'redirect' =>
@@ -234,7 +234,7 @@
     if (!defined($data{'username'}) || !defined($data{'domain'})) {
         return &goto_login($r);
     }
-    my $ip = &Apache::lonnet::get_requestor_ip(); 
+    my $ip = &Apache::lonnet::get_requestor_ip($r,REMOTE_NOLOOKUP); 
     if ($data{'ip'} ne $ip) {
         &Apache::lonnet::logthis('IP change when session migration requested -- was: '.
                  $data{'ip'}.'; now: '.$ip.' for '.$data{'username'}.':'.$data{'domain'});
@@ -289,7 +289,20 @@
             }
         }
     } else {
-	my $handle = &Apache::lonnet::check_for_valid_session($r);
+        my ($handle,$expirepub);
+	$handle = &Apache::lonnet::check_for_valid_session($r);
+
+# For "public user" - remove any existing "public" cookie so actual user is logged in.
+        if ($handle) {
+            if ($handle=~/^publicuser\_/) {
+                my $lonidsdir=$r->dir_config('lonIDsDir');
+                if ($lonidsdir ne '') {
+                    unlink("$lonidsdir/$handle.id");
+                }
+                undef($handle);
+                $expirepub = 1;
+            }
+        }
 	if ($handle) {
 	    &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
 						     $handle);
@@ -306,7 +319,8 @@
                 $desturl = $data{'origurl'};
             }
 	    &Apache::lonauth::success($r,$data{'username'},$data{'domain'},
-				      $home,$desturl,$extra_env,\%form);
+				      $home,$desturl,$extra_env,\%form,'',
+                                      $expirepub);
 
 	}
 	return OK;




More information about the LON-CAPA-cvs mailing list