Diff for /loncom/auth/migrateuser.pm between versions 1.1 and 1.13

version 1.1, 2005/10/24 21:32:42 version 1.13, 2008/03/24 04:56:07
Line 26 Line 26
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
   
 package Apache::startuser;  package Apache::migrateuser;
   
 use strict;  use strict;
   use LONCAPA;
 use Apache::Constants qw(:common :http :methods);  use Apache::Constants qw(:common :http :methods);
 use Apache::lonauth;  use Apache::lonauth;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::lonlocal;
   
 sub goto_login {  sub goto_login {
   my ($r) = @_;      my ($r) = @_;
   &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
   $r->send_http_header;      $r->send_http_header;
   $r->print(<<TOLOGIN);      $r->print(&Apache::loncommon::start_page('Going to login',undef,
 <html>       {'redirect' =>
   <head>    [0,'/adm/login'],}).
     <meta http-equiv="refresh" content="10;url=/adm/login" />        '<h1>'.&mt('One moment please...').'</h1>'.
     <title>Going to login</title>        '<p>'.&mt('Transferring to login page.').'</p>'.
   </head>        &Apache::loncommon::end_page());
   <body>      return OK;
     <h1>One moment please...</h1>  }
     <p>  
       Transferring to login page.  
       <a href="/adm/login">Continue</a>  sub sso_check {
     </p>      my ($data) = @_;
   </body>      my %extra_env;
 </html>      if ($data->{'sso.login'}) {
 TOLOGIN   $extra_env{'request.sso.login'} = $data->{'sso.login'};
     return '';      }
       if ($data->{'sso.reloginserver'}) {
           $extra_env{'request.sso.reloginserver'} = 
               $data->{'sso.reloginserver'};
       }
       return \%extra_env;
 }  }
   
 sub handler {  sub handler {
     my ($r) = @_;      my ($r) = @_;
           
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token']);      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token']);
     my $data = &Apache::lonnet::reply('tmpget:'.$env{'form.token'},      my %data =   &Apache::lonnet::tmpget($env{'form.token'});
       $Apache::lonnet::perlvar{'lonHostID'});      if (keys(%data) == 0) {
     my ($ip,$udom,$uname,$role) = split('&',$data);          return &goto_login($r);
       }
     if ($ip ne $ENV{'REMOTE_ADDR'} && $ip ne '127.0.0.1') {      my $delete = &Apache::lonnet::tmpdel($env{'form.token'});
  #error or invalid token  
  &goto_login($r);      &Apache::lonlocal::get_language_handle($r);
   
       if ($delete ne 'ok') {
    return &goto_login($r);
       }
   
       if ($data{'ip'} ne $ENV{'REMOTE_ADDR'} || !defined($data{'username'}) ||
    !defined($data{'domain'}) ) {
    return &goto_login($r);
       }
   
       &Apache::lonnet::logthis("Allowing access for $data{'username'}\@$data{'domain'} to $data{'role'}");
       my $home=&Apache::lonnet::homeserver($data{'username'},$data{'domain'});
       if ($home =~ /(con_lost|no_such_host)/) { return &goto_login($r); }
   
       my $extra_env = &sso_check(\%data);
   
       if (!$data{'role'}) {
    my $handle = &Apache::lonnet::check_for_valid_session($r);
    if ($handle) {
       &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
        $handle);
       if ($env{'request.course.id'}) {
    $r->internal_redirect('/adm/navmaps');
       } else {
    $r->internal_redirect('/adm/roles');
       }
    } else {
       &Apache::lonauth::success($r,$data{'username'},$data{'domain'},
         $home,'/adm/roles',$extra_env);
   
    }
  return OK;   return OK;
   
     }      }
   
     &Apache::lonnet::logthis("Allowing access for $uname\@$udom to $role");      my $next_url='/adm/roles?selectrole=1&amp;'.&escape($data{'role'}).'=1';
     my $home=&Apache::lonnet::homeserver($uname,$udom);  
     my $cookie=&Apache::lonauth::success($r,$uname,$udom,$home,'noredirect');      
     $r->header_out('Set-cookie',"lonID=$cookie; path=/");      &Apache::lonauth::success($r,$data{'username'},$data{'domain'},$home,
     &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),        $next_url,$extra_env);
      $cookie);      return OK;
     $env{'form.selectrole'}='1';  
     $env{'form.'.$role}='1';  
     return &Apache::lonroles::handler($r);  
 }  }
   
 1;  1;

Removed from v.1.1  
changed lines
  Added in v.1.13


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