Diff for /loncom/interface/lonrequestcourse.pm between versions 1.59 and 1.60

version 1.59, 2010/11/19 00:01:25 version 1.60, 2011/01/05 18:47:46
Line 1322  sub print_request_form { Line 1322  sub print_request_form {
                             }                              }
                             if ($skipuser) {                              if ($skipuser) {
                                 push(@disallowed,$i);                                  push(@disallowed,$i);
                                 $disallowmsg{$i} = &mt('[_1] was excluded because new users need be from the course domain','<tt>'.$personname.':'.$persondom.'</tt>');                                  $disallowmsg{$i} = &mt('[_1] was excluded because new users need to be from the course domain','<tt>'.$personname.':'.$persondom.'</tt>');
                                 next;                                  next;
                             }                              }
                         }                          }
                         if (&get_cancreate_status($persondom,$personname,$dom)) {                          my $usertype = &get_usertype($persondom,$personname,\%curr_rules,\%got_rules);
                             my ($allowed,$msg) =                           if (&Apache::lonuserutils::can_create_user($dom,'requestcrs',$usertype)) {
                               my ($allowed,$msg,$authtype,$authparam) = 
                                 &check_newuser_rules($persondom,$personname,                                  &check_newuser_rules($persondom,$personname,
                                     \%alerts,\%rulematch,\%inst_results,                                      \%alerts,\%rulematch,\%inst_results,
                                     \%curr_rules,\%got_rules);                                      \%curr_rules,\%got_rules);
                             if ($allowed) {                              if ($allowed) {
                                   my %domdefaults = &Apache::lonnet::get_domain_defaults($persondom);
                                   if ($usertype eq 'official') {
                                       if ($authtype eq '') {
                                           $authtype = $domdefaults{'auth_def'};
                                           $authparam = $domdefaults{'auth_arg_def'};
                                       }
                                   } elsif ($usertype eq 'unofficial') {
                                       if ($authtype eq '') {
                                           $authtype = 'internal';
                                           $authparam = '';
                                       }
                                   } else {
                                       $authtype = $domdefaults{'auth_def'};
                                       $authparam = $domdefaults{'auth_arg_def'};
                                   }
                                   if (($authtype eq '') ||
                                       (($authtype =~/^krb/) && ($authparam eq ''))) {
                                       push(@disallowed,$i);
                                       $disallowmsg{$i} = &mt('[_1] was excluded because institutional information is incomplete for this new user.','<tt>'.$personname.':'.$persondom.'</tt>');
                                       next;
                                   }
                                 if (ref($inst_results{$personname.':'.$persondom}) eq 'HASH') {                                  if (ref($inst_results{$personname.':'.$persondom}) eq 'HASH') {
                                     if ($inst_results{$personname.':'.$persondom}{'lastname'} ne '') {                                      if ($inst_results{$personname.':'.$persondom}{'lastname'} ne '') {
                                         $env{'form.person_'.$i.'_lastname'} = $inst_results{$personname.':'.$persondom}{'lastname'};                                          $env{'form.person_'.$i.'_lastname'} = $inst_results{$personname.':'.$persondom}{'lastname'};
Line 1454  sub print_request_form { Line 1476  sub print_request_form {
     return;      return;
 }  }
   
 sub get_cancreate_status {  sub get_usertype {
     my ($persondom,$personname,$dom) = @_;      my ($persondom,$personname,$curr_rules,$got_rules) = @_;
     my ($rules,$ruleorder) =      my ($rules,$ruleorder) =
         &Apache::lonnet::inst_userrules($persondom,'username');          &Apache::lonnet::inst_userrules($persondom,'username');
     my $usertype = &Apache::lonuserutils::check_usertype($persondom,$personname,      my $usertype = &Apache::lonuserutils::check_usertype($persondom,$personname,
                                                          $rules);                                                           $rules,$curr_rules,$got_rules);
     return &Apache::lonuserutils::can_create_user($dom,'requestcrs',$usertype);      return $usertype;
 }  }
   
 sub check_newuser_rules {  sub check_newuser_rules {
Line 1468  sub check_newuser_rules { Line 1490  sub check_newuser_rules {
         $got_rules) = @_;          $got_rules) = @_;
     my $allowed = 1;      my $allowed = 1;
     my $newuser = 1;      my $newuser = 1;
     my ($checkhash,$userchkmsg);      my ($checkhash,$userchkmsg,$authtype,$authparam);
     my $checks = { 'username' => 1 };      my $checks = { 'username' => 1 };
     $checkhash->{$personname.':'.$persondom} = { 'newuser' => $newuser };      $checkhash->{$personname.':'.$persondom} = { 'newuser' => $newuser };
     &Apache::loncommon::user_rule_check($checkhash,$checks,$alerts,$rulematch,      &Apache::loncommon::user_rule_check($checkhash,$checks,$alerts,$rulematch,
Line 1490  sub check_newuser_rules { Line 1512  sub check_newuser_rules {
             }              }
         }          }
     }      }
     return ($allowed,$userchkmsg);      if ($allowed) {
           if (ref($rulematch) eq 'HASH') {
               if (ref($rulematch->{$personname.':'.$persondom}) eq 'HASH') {
                   my $matchedrule = $rulematch->{$personname.':'.$persondom}{'username'};
                   my ($rules,$ruleorder) =
                       &Apache::lonnet::inst_userrules($persondom,'username');
                   if (ref($rules) eq 'HASH') {
                       if (ref($rules->{$matchedrule}) eq 'HASH') {
                           $authtype = $rules->{$matchedrule}{'authtype'};
                           $authparam = $rules->{$matchedrule}{'authparm'};
                       }
                   }
               }
           }
       }
       return ($allowed,$userchkmsg,$authtype,$authparam);
 }  }
   
 sub get_excluded_elements {  sub get_excluded_elements {
Line 3065  sub print_request_outcome { Line 3102  sub print_request_outcome {
         $enrollstart = '';          $enrollstart = '';
         $enrollend = '';          $enrollend = '';
     }      }
       my (%alerts,%rulematch,%inst_results,%curr_rules,%got_rules,%disallowmsg);
     for (my $i=0; $i<$env{'form.persontotal'}; $i++) {      for (my $i=0; $i<$env{'form.persontotal'}; $i++) {
         my $uname = $env{'form.person_'.$i.'_uname'};          my $uname = $env{'form.person_'.$i.'_uname'};
         my $udom = $env{'form.person_'.$i.'_dom'};          my $udom = $env{'form.person_'.$i.'_dom'};
Line 3076  sub print_request_outcome { Line 3114  sub print_request_outcome {
                              lastname     => $env{'form.person_'.$i.'_lastname'},                               lastname     => $env{'form.person_'.$i.'_lastname'},
                              emailaddr    => $env{'form.person_'.$i.'_emailaddr'},                               emailaddr    => $env{'form.person_'.$i.'_emailaddr'},
                                                    };                                                     };
                       my $usertype = &get_usertype($udom,$uname,\%curr_rules,\%got_rules);
                       if (&Apache::lonuserutils::can_create_user($udom,'requestcrs',$usertype)) {
                           my ($allowed,$msg,$authtype,$authparam) =
                               &check_newuser_rules($udom,$uname,\%alerts,\%rulematch,
                                                    \%inst_results,\%curr_rules,\%got_rules);
                           if ($allowed) {
                               my %domdefaults = &Apache::lonnet::get_domain_defaults($udom);
                               if ($usertype eq 'official') {
                                   if ($authtype eq '') {
                                       $authtype = $domdefaults{'auth_def'};
                                       $authparam = $domdefaults{'auth_arg_def'};
                                   } else {
                                       if ($authtype eq 'loc') {
                                           $authtype = 'localauth';
                                       } elsif ($authtype eq 'int') {
                                           $authtype = 'internal';
                                       }
                                       if ($authtype !~ /^(krb4|krb5|internal|localauth)$/) {
                                           $authtype = $domdefaults{'auth_def'};
                                           $authparam = $domdefaults{'auth_arg_def'};
                                       }
                                   }
                               } elsif ($usertype eq 'unofficial') {
                                   if ($authtype eq '') {
                                       $authtype = 'internal';
                                       $authparam = '';
                                   }
                               } else {
                                   $authtype = $domdefaults{'auth_def'};
                                   $authparam = $domdefaults{'auth_arg_def'};
                               }
                               if (($authtype eq '') ||
                                   (($authtype =~/^krb(4|5)$/) && ($authparam eq '')) ||
                                   ($authtype !~ /^(krb4|krb5|internal|localauth)$/)) {
                                   next;
                               } else {
                                   $personnel{$uname.':'.$udom}{'authtype'} = $authtype;
                                   $personnel{$uname.':'.$udom}{'autharg'} = $authparam;
                               }
                           } else {
                               next;
                           }
                       } else {
                           next;
                       }
                 }                  }
                 my $role = $env{'form.person_'.$i.'_role'};                  my $role = $env{'form.person_'.$i.'_role'};
                 unless ($role eq '') {                  unless ($role eq '') {

Removed from v.1.59  
changed lines
  Added in v.1.60


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