Diff for /loncom/auth/lonauth.pm between versions 1.101.10.1 and 1.103

version 1.101.10.1, 2010/09/15 18:28:45 version 1.103, 2010/03/17 17:51:06
Line 111  sub success { Line 111  sub success {
         }          }
     }      }
   
     my $windowinfo=&Apache::lonmenu::open($env{'browser.os'});      my $windowinfo = Apache::lonhtmlcommon::scripttag('self.name="loncapaclient";');
     my $startupremote=&Apache::lonmenu::startupremote($destination);      my $header = '<meta HTTP-EQUIV="Refresh" CONTENT="0; url='.$destination.'" />';
     my $remoteinfo=&Apache::lonmenu::load_remote_msg($lowerurl);  
     my $setflags=&Apache::lonmenu::setflags();  
     my $maincall=&Apache::lonmenu::maincall();  
     my $brcrum = [{'href' => '',      my $brcrum = [{'href' => '',
                    'text' => 'Successful Login'},];                     'text' => 'Successful Login'},];
     my $start_page=&Apache::loncommon::start_page('Successful Login',      my $start_page=&Apache::loncommon::start_page('Successful Login',
                                                   $startupremote,                                                    $header,
                                                   {'no_inline_link' => 1,                                                    {'no_inline_link' => 1,
                                                    'bread_crumbs' => $brcrum,});                                                     'bread_crumbs' => $brcrum,});
     my $end_page  =&Apache::loncommon::end_page();      my $end_page  =&Apache::loncommon::end_page();
   
     my $continuelink;   my $continuelink='<a href="'.$destination.'">'.&mt('Continue').'</a>';
     if ($env{'environment.remote'} eq 'off') {  
  $continuelink='<a href="'.$destination.'">'.&mt('Continue').'</a>';  
     }  
 # ------------------------------------------------- Output for successful login  # ------------------------------------------------- Output for successful login
   
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
Line 142  sub success { Line 136  sub success {
        );         );
     $r->print(<<ENDSUCCESS);      $r->print(<<ENDSUCCESS);
 $start_page  $start_page
 $setflags  
 $windowinfo  $windowinfo
 <h1>$lt{'wel'}</h1>  <h1>$lt{'wel'}</h1>
 $lt{'mes'}<p>  $lt{'mes'}<p>
 <a href="/adm/$lt{'log'}">$lt{'pro'}</a></p>  <a href="/adm/$lt{'log'}">$lt{'pro'}</a></p>
 $remoteinfo  
 $maincall  
 $continuelink  $continuelink
 $end_page  $end_page
 ENDSUCCESS  ENDSUCCESS
Line 209  sub handler { Line 200  sub handler {
 # -------------------------------- Prevent users from attempting to login twice  # -------------------------------- Prevent users from attempting to login twice
     my $handle = &Apache::lonnet::check_for_valid_session($r);      my $handle = &Apache::lonnet::check_for_valid_session($r);
     if ($handle ne '') {      if ($handle ne '') {
           my $lonidsdir=$r->dir_config('lonIDsDir');
           if ($handle=~/^publicuser\_/) {
   # For "public user" - remove it, we apparently really want to login
               unlink($r->dir_config('lonIDsDir')."/$handle.id");
           } else {
 # Indeed, a valid token is found  # Indeed, a valid token is found
  &Apache::loncommon::content_type($r,'text/html');              &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
  $r->send_http_header;      &Apache::loncommon::content_type($r,'text/html');
  my $start_page =       $r->send_http_header;
     &Apache::loncommon::start_page('Already logged in');      my $start_page = 
  my $end_page =           &Apache::loncommon::start_page('Already logged in');
     &Apache::loncommon::end_page();      my $end_page = 
         $r->print(          &Apache::loncommon::end_page();
            $start_page              $r->print(
           .'<h1>'.&mt('You are already logged in!').'</h1>'                 $start_page
           .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].'                .'<h1>'.&mt('You are already logged in!').'</h1>'
                 .'<p>'.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].'
                     ,'<a href="/adm/roles">','</a>','<a href="/adm/logout">','</a>')                      ,'<a href="/adm/roles">','</a>','<a href="/adm/logout">','</a>')
           .'</p>'                .'</p>'
           .'<p><a href="/adm/loginproblems.html">'.&mt('Login problems?').'</a></p>'                .$end_page
           .$end_page              );
         );              return OK;
         return OK;          }
     }      }
   
 # ---------------------------------------------------- No valid token, continue  # ---------------------------------------------------- No valid token, continue
Line 336  sub handler { Line 333  sub handler {
     if (grep(/^login$/,@cancreate)) {      if (grep(/^login$/,@cancreate)) {
         $defaultauth = 1;          $defaultauth = 1;
     }      }
     my $uname = $form{'uname'};      my $authhost=Apache::lonnet::authenticate($form{'uname'},$upass,
     my $authhost=Apache::lonnet::authenticate($uname,$upass,  
                                               $form{'udom'},$defaultauth);                                                $form{'udom'},$defaultauth);
           
 # --------------------------------------------------------------------- Failed?  # --------------------------------------------------------------------- Failed?
   
     if ($authhost eq 'no_host') {      if ($authhost eq 'no_host') {
         my $lc_uname = lc($form{'uname'});   &failed($r,'Username and/or password could not be authenticated.',
         if ($uname eq $lc_uname) {   \%form);
             &failed($r,'Username and/or password could not be authenticated.',          return OK;
                     \%form);      } elsif ($authhost eq 'no_account_on_host') {
           my %domconfig = 
               &Apache::lonnet::get_dom('configuration',['usercreation'],$form{'udom'});
           if (grep(/^login$/,@cancreate)) {
               my $start_page = 
                   &Apache::loncommon::start_page('Create a user account in LON-CAPA',
                                                  '',{'no_inline_link'   => 1,});
               my $domdesc = &Apache::lonnet::domain($form{'udom'},'description');
               my $lonhost = $r->dir_config('lonHostID');
               my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
               my $contacts = 
                   &Apache::loncommon::build_recipient_list(undef,'helpdeskmail',
                                                           $form{'udom'},$origmail);
               my ($contact_email) = split(',',$contacts); 
               my $output = &Apache::createaccount::username_check($form{'uname'}, 
                                                                   $form{'udom'},$domdesc,'',
                                                                   $lonhost,$contact_email,$contact_name);
               &Apache::loncommon::content_type($r,'text/html');
               $r->send_http_header;
               &Apache::createaccount::print_header($r,$start_page);
               $r->print('<h3>'.&mt('Account creation').'</h3>'.
                         &mt('Although your username and password were authenticated, you do not currently have a LON-CAPA account at this institution.').'<br />'.
                         $output.&Apache::loncommon::end_page());
             return OK;              return OK;
         } else {          } else {
             $authhost=Apache::lonnet::authenticate($lc_uname,$upass,              &failed($r,'Although your username and password were authenticated, you do not currently have a LON-CAPA account in this domain, and you are not permitted to create one.',\%form);
                                                    $form{'udom'},$defaultauth);              return OK;
             if ($authhost eq 'no_host') {  
                 &failed($r,'Username (in lower case) and/or password could not be authenticated.',  
                         \%form);  
                 return OK;  
             } elsif ($authhost eq 'no_account_on_host') {  
                 &create_account($r,\%form,\@cancreate,$lc_uname,$contact_name);  
                 return OK;  
             } else {  
                 $form{'uname'} = $lc_uname;   
             }  
         }          }
     } elsif ($authhost eq 'no_account_on_host') {  
         &create_account($r,\%form,\@cancreate,$uname);  
         return OK;  
     }      }
   
     if (($firsturl eq '') ||       if (($firsturl eq '') || 
Line 405  sub handler { Line 410  sub handler {
     return OK;      return OK;
 }  }
   
 sub create_account {  
     my ($r,$form,$cancreate,$uname,$contact_name) = @_;  
     return unless((ref($form) eq 'HASH') && (ref($cancreate) eq 'ARRAY'));  
     my %domconfig =  
         &Apache::lonnet::get_dom('configuration',['usercreation'],$form->{'udom'});  
     if (grep(/^login$/,@{$cancreate})) {  
         my $start_page =  
             &Apache::loncommon::start_page('Create a user account in LON-CAPA',  
                                            '',{'no_inline_link'   => 1,});  
         my $domdesc = &Apache::lonnet::domain($form->{'udom'},'description');  
         my $lonhost = $r->dir_config('lonHostID');  
         my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'};  
         my $contacts =  
             &Apache::loncommon::build_recipient_list(undef,'helpdeskmail',  
                                                     $form->{'udom'},$origmail);  
         my ($contact_email) = split(',',$contacts);  
         my $output =   
             &Apache::createaccount::username_check($uname,$form->{'udom'},  
                                                    $domdesc,'',$lonhost,  
                                                    $contact_email,$contact_name);  
         &Apache::loncommon::content_type($r,'text/html');  
         $r->send_http_header;  
         &Apache::createaccount::print_header($r,$start_page);  
         $r->print('<h3>'.&mt('Account creation').'</h3>'.  
                   &mt('Although your username and password were authenticated, you do not currently have a LON-CAPA account at this institution.').'<br />'.  
                   $output.&Apache::loncommon::end_page());  
     } else {  
         &failed($r,'Although your username and password were authenticated, you do not currently have a LON-CAPA account in this domain, and you are not permitted to create one.',$form);  
     }  
     return;  
 }  
   
 1;  1;
 __END__  __END__
   

Removed from v.1.101.10.1  
changed lines
  Added in v.1.103


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