Diff for /loncom/interface/createaccount.pm between versions 1.17 and 1.18

version 1.17, 2008/07/12 14:08:58 version 1.18, 2008/07/13 00:51:31
Line 127  sub handler { Line 127  sub handler {
   
     if ($sso_username ne '') {      if ($sso_username ne '') {
         &print_header($r,$start_page);          &print_header($r,$start_page);
         my $msg;          my ($msg,$sso_logout);
           $sso_logout = &sso_logout_frag($r,$domain);
         if (grep(/^sso$/,@cancreate)) {          if (grep(/^sso$/,@cancreate)) {
             $msg = '<h3>'.&mt('Account creation').'</h3>'.              $msg = '<h3>'.&mt('Account creation').'</h3>'.
                    &mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution.").'<br />';                     &mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution.").'<br />';
             my ($output,$checkfail) = &username_check($sso_username,$domain,  
                                                       $domdesc,$courseid,  
                                                       $lonhost,$contact_email);  
             if ($checkfail) {  
                 $msg .= '<h4>'.&mt('Account creation unavailable').'</h4>';  
                 if ($checkfail eq 'username') {  
                     $msg .= '<span class="LC_warning">'.  
                             &mt('A LON-CAPA account may not be created with the username you use.').  
                             '</span><br /><br />'.$output;  
                 } elsif ($checkfail eq 'authtoken') {  
                     $msg .= '<span class="LC_error">'.&mt('Error creating token.').'</span>'.  
                             '<br />'.$output;  
                 }  
                 $msg .= &mt('Please contact the [_1] ([_2]) for assistance.',  
                             $contact_name,$contact_email).'<br /><hr />'.  
                         &sso_logout_frag($r,$domain);      
   
             } else {              $msg .= &username_check($sso_username,$domain,$domdesc,$courseid, 
                 $msg .= '<br />'.&mt('To create one, use the table below to provide information about yourself (if appropriate), then click the "Create LON-CAPA account" button.').'<br />'.$output;                                      $lonhost,$contact_email,$contact_name,$sso_logout);
             }  
         } else {          } else {
             $msg = '<h3>'.&mt('Account creation unavailable').'</h3>'.              $msg = '<h3>'.&mt('Account creation unavailable').'</h3>'.
                    '<span class="LC_warning">'.&mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution, and you are not permitted to create one.").'</span><br /><br />'.&mt('Please contact the [_1] ([_2]) for assistance.',$contact_name,$contact_email).'<hr />'.                     '<span class="LC_warning">'.&mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution, and you are not permitted to create one.").'</span><br /><br />'.&mt('Please contact the [_1] ([_2]) for assistance.',$contact_name,$contact_email).'<hr />'.
                    &sso_logout_frag($r,$domain);                     $sso_logout;
         }          }
         $r->print($msg);          $r->print($msg);
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
Line 749  sub username_validation { Line 733  sub username_validation {
             $authok = 'non_authorized';              $authok = 'non_authorized';
         }          }
         if ($authok eq 'authorized') {          if ($authok eq 'authorized') {
             ($output,undef) = &username_check($username,$domain,$domdesc,              $output = &username_check($username,$domain,$domdesc,$courseid,$lonhost,
                                               $courseid,$lonhost,$contact_email);                                         $contact_email,$contact_name);
         } else {          } else {
             $output = '<div class="LC_warning">'              $output = '<div class="LC_warning">'
                      .&mt('Username and/or password could not be authenticated.')                       .&mt('Username and/or password could not be authenticated.')
Line 762  sub username_validation { Line 746  sub username_validation {
 }  }
   
 sub username_check {  sub username_check {
     my ($username,$domain,$domdesc,$courseid,$lonhost,$contact_email) = @_;      my ($username,$domain,$domdesc,$courseid,$lonhost,$contact_email,$contact_name,
     my (%rulematch,%inst_results,$newuser,%alerts,%curr_rules,%got_rules);          $sso_logout) = @_;
       my (%rulematch,%inst_results,$newuser,$checkfail,$rowcount,$editable,$output,$msg,
           %alerts,%curr_rules,%got_rules);
     $newuser = 1;      $newuser = 1;
     my $checkhash;      my $checkhash;
     my $checks = { 'username' => 1 };      my $checks = { 'username' => 1 };
Line 773  sub username_check { Line 759  sub username_check {
     if (ref($alerts{'username'}) eq 'HASH') {      if (ref($alerts{'username'}) eq 'HASH') {
         if (ref($alerts{'username'}{$domain}) eq 'HASH') {          if (ref($alerts{'username'}{$domain}) eq 'HASH') {
             if ($alerts{'username'}{$domain}{$username}) {              if ($alerts{'username'}{$domain}{$username}) {
                 my ($userchkmsg,$checkfail);  
                 if (ref($curr_rules{$domain}) eq 'HASH') {                  if (ref($curr_rules{$domain}) eq 'HASH') {
                     $userchkmsg =                      $output =
                         &Apache::loncommon::instrule_disallow_msg('username',$domdesc,1,                          &Apache::loncommon::instrule_disallow_msg('username',$domdesc,1,
                                                                   'selfcreate').                                                                    'selfcreate').
                         &Apache::loncommon::user_rule_formats($domain,$domdesc,                          &Apache::loncommon::user_rule_formats($domain,$domdesc,
                                 $curr_rules{$domain}{'username'},'username');                                  $curr_rules{$domain}{'username'},'username');
                     if ($userchkmsg) {  
                         $checkfail = 'username';  
                     }  
                 }                  }
                 return ($userchkmsg,$checkfail);                  $checkfail = 'username';
             }              }
         }          }
     }      }
     my $submit_text = &mt('Create LON-CAPA account');      if (!$checkfail) {
     my $output = '<form method="post" action="/adm/createaccount">'.          $output = '<form method="post" action="/adm/createaccount">';
                  &Apache::loncreateuser::personal_data_display($username,$domain,1,          (my $datatable,$rowcount,$editable) = 
                                     undef,$inst_results{$username.':'.$domain}).              &Apache::loncreateuser::personal_data_display($username,$domain,1,'selfcreate',
                 '<br /><br /><input type="hidden" name="uname" value="'.$username.'" />'."\n".                                                           $inst_results{$username.':'.$domain});
                 '<input type="hidden" name="udom" value="'.$domain.'" />'."\n".          if ($rowcount > 0) {
                 '<input type="hidden" name="phase" value="username_activation" />';              $output .= $datatable;
     my $now = time;          }
     my %info = ('ip'         => $ENV{'REMOTE_ADDR'},          $output .=  '<br /><br /><input type="hidden" name="uname" value="'.$username.'" />'."\n".
                 'time'       => $now,                      '<input type="hidden" name="udom" value="'.$domain.'" />'."\n".
                 'domain'     => $domain,                      '<input type="hidden" name="phase" value="username_activation" />';
                 'username'   => $username);          my $now = time;
     my $authtoken = &Apache::lonnet::tmpput(\%info,$lonhost);          my %info = ('ip'         => $ENV{'REMOTE_ADDR'},
     if ($authtoken !~ /^error/ && $authtoken ne 'no_such_host') {                      'time'       => $now,
         $output .= '<input type="hidden" name="authtoken" value="'.&HTML::Entities::encode($authtoken,'&<>"').'" />';                      'domain'     => $domain,
                       'username'   => $username);
           my $authtoken = &Apache::lonnet::tmpput(\%info,$lonhost);
           if ($authtoken !~ /^error/ && $authtoken ne 'no_such_host') {
               $output .= '<input type="hidden" name="authtoken" value="'.&HTML::Entities::encode($authtoken,'&<>"').'" />';
           } else {
               $output = &mt('An error occurred when storing a token').'<br />'.
                         &mt('You will not be able to proceed to the next stage of account creation').
                         &linkto_email_help($contact_email,$domdesc);
               $checkfail = 'authtoken';
           }
       }
       if ($checkfail) { 
           $msg = '<h4>'.&mt('Account creation unavailable').'</h4>';
           if ($checkfail eq 'username') {
               $msg .= '<span class="LC_warning">'.
                        &mt('A LON-CAPA account may not be created with the username you use.').
                        '</span><br /><br />'.$output;
           } elsif ($checkfail eq 'authtoken') {
               $msg .= '<span class="LC_error">'.&mt('Error creating token.').'</span>'.
                       '<br />'.$output;
           }
           $msg .= &mt('Please contact the [_1] ([_2]) for assistance.',
                   $contact_name,$contact_email).'<br /><hr />'.
                   $sso_logout;
           &Apache::lonnet::logthis("ERROR: failure type of '$checkfail' when performing username check to create account for authenticated user: $username, in domain $domain");
     } else {      } else {
         $output = &mt('An error occurred when storing a token').'<br />'.          if ($courseid ne '') {
                   &mt('You will not be able to proceed to the next stage of account creation').              $output .= '<input type="hidden" name="courseid" value="'.$courseid.'" />';
                   &linkto_email_help($contact_email,$domdesc);          }
         return($output,'authtoken');          $output .= '<input type="submit" name="newaccount" value="'.
     }                     &mt('Create LON-CAPA account').'" /></form>';
     if ($courseid ne '') {          if ($rowcount) {
         $output .= '<input type="hidden" name="courseid" value="'.$courseid.'" />';              if ($editable) {
     }                  $msg = &mt('To create one, use the table below to provide information about yourself, then click the [_1]Create LON-CAPA account[_2] button.','<span class="LC_cusr_emph">','</span>').'<br />';
     $output .= '<input type="submit" name="newaccount" value="'.              } else {
                $submit_text.'" /></form>';                   $msg = &mt('A user account will be created with information displayed in the table below, when you click the [_1]Create LON-CAPA account[_2] button.','<span class="LC_cusr_emph">','</span>').'<br />';
     return ($output,'');              }
           } else {
               $msg = '<br />'.&mt('Confirm that you wish to create an account.');
           }
           $msg .= $output;
       }
       return $msg;
 }  }
   
 sub username_activation {  sub username_activation {

Removed from v.1.17  
changed lines
  Added in v.1.18


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