Diff for /loncom/interface/loncreateuser.pm between versions 1.31 and 1.38

version 1.31, 2002/04/22 15:26:46 version 1.38, 2002/08/07 18:49:36
Line 85  BEGIN { Line 85  BEGIN {
 sub phase_one {  sub phase_one {
     my $r=shift;      my $r=shift;
     my $defdom=$ENV{'user.domain'};      my $defdom=$ENV{'user.domain'};
     $r->print(<<ENDDOCUMENT);      my @domains = &Apache::loncommon::get_domains();
       my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain');
       $r->print(<<"ENDDOCUMENT");
 <html>  <html>
 <head>  <head>
 <title>The LearningOnline Network with CAPA</title>  <title>The LearningOnline Network with CAPA</title>
Line 94  sub phase_one { Line 96  sub phase_one {
 <h1>Create User, Change User Privileges</h1>  <h1>Create User, Change User Privileges</h1>
 <form action=/adm/createuser method=post>  <form action=/adm/createuser method=post>
 <input type=hidden name=phase value=two>  <input type=hidden name=phase value=two>
   <p>
 Username: <input type=text size=15 name=ccuname><br>  Username: <input type=text size=15 name=ccuname><br>
 Domain: <input type=text size=15 name=ccdomain value=$defdom><p>  Domain: $domform 
   </p>
 <input type=submit value="Continue">  <input type=submit value="Continue">
 </form>  </form>
 </body>  </body>
Line 165  ENDFORMINFO Line 169  ENDFORMINFO
     my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain);      my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain);
     my %incdomains;       my %incdomains; 
     my %inccourses;      my %inccourses;
     my %home_servers = &get_home_servers($ccdomain);    
     foreach (%Apache::lonnet::hostdom) {      foreach (%Apache::lonnet::hostdom) {
        $incdomains{$_}=1;         $incdomains{$_}=1;
     }      }
Line 176  ENDFORMINFO Line 179  ENDFORMINFO
     }      }
     if ($uhome eq 'no_host') {      if ($uhome eq 'no_host') {
         my $home_server_list=          my $home_server_list=
             '<option value="default" selected>default</option>'."\n";              '<option value="default" selected>default</option>'."\n".
         foreach (sort keys(%home_servers)) {                  &Apache::loncommon::home_server_option_list($ccdomain);
             $home_server_list.=          
                 '<option value="'.$_.'">'.$_.' '.  
                     $home_servers{$_}."</option>\n";  
         }  
  $r->print(<<ENDNEWUSER);   $r->print(<<ENDNEWUSER);
 $dochead  $dochead
 <h1>Create New User</h1>  <h1>Create New User</h1>
Line 250  END Line 250  END
         my ($tmp) = keys(%rolesdump);          my ($tmp) = keys(%rolesdump);
         unless ($tmp =~ /^(con_lost|error)/i) {          unless ($tmp =~ /^(con_lost|error)/i) {
            my $now=time;             my $now=time;
            $r->print('<hr /><h3>Revoke Existing Roles</h3>'.             $r->print(<<END);
              '<table border=2><tr><th>Revoke</th><th>Role</th><th>Extent</th>'.  <hr />
      '<th>Start</th><th>End</th>');  <h3>Revoke Existing Roles</h3>
   <table border=2>
   <tr><th>Revoke</th><th>Role</th><th>Extent</th><th>Start</th><th>End</th>
   END
    foreach my $area (keys(%rolesdump)) {     foreach my $area (keys(%rolesdump)) {
               if ($area!~/^rolesdef/) {                 next if ($area =~ /^rolesdef/);
                  my $role = $rolesdump{$area};                 my $role = $rolesdump{$area};
                  my $thisrole=$area;                 my $thisrole=$area;
                  $area=~s/\_\w\w$//;                 $area =~ s/\_\w\w$//;
                  my ($role_code,$role_end_time,$role_start_time) =                 my ($role_code,$role_end_time,$role_start_time) = 
                      split(/_/,$role);                     split(/_/,$role);
                  my $bgcol='ffffff';                 my $bgcol='ffffff';
                  my $allows=0;                 my $allowed=0;
                  if ($area=~/^\/(\w+)\/(\d\w+)/) {                 if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {
                     my %coursedata=                     my %coursedata=
                         &Apache::lonnet::coursedescription($1.'_'.$2);                         &Apache::lonnet::coursedescription($1.'_'.$2);
                     my $carea='Course: '.$coursedata{'description'};                     my $carea='Course: '.$coursedata{'description'};
                     $inccourses{$1.'_'.$2}=1;                     $inccourses{$1.'_'.$2}=1;
                     if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) {                     if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) {
                         $allows=1;                         $allowed=1;
                     }                     }
                     # Compute the background color based on $area                     # Compute the background color based on $area
                     $bgcol=$1.'_'.$2;                     $bgcol=$1.'_'.$2;
                     $bgcol=~s/[^8-9b-e]//g;                     $bgcol=~s/[^8-9b-e]//g;
                     $bgcol=substr($bgcol.$bgcol.$bgcol.'ffffff',0,6);                     $bgcol=substr($bgcol.$bgcol.$bgcol.'ffffff',0,6);
                     if ($area=~/^\/(\w+)\/(\d\w+)\/(\w+)/) {                     if ($area=~/^\/(\w+)\/(\d\w+)\/(\w+)/) {
                        $carea.='<br>Section/Group: '.$3;                         $carea.='<br>Section/Group: '.$3;
                     }                     }
                     $area=$carea;                     $area=$carea;
                  } else {                 } else {
                      # Determine if current user is able to revoke privileges                     # Determine if current user is able to revoke privileges
                      if ($area=~/^\/(\w+)\//) {                     if ($area=~ /^\/(\w+)\//) {
                         if (&Apache::lonnet::allowed('c'.$role_code,$1)) {                         if (&Apache::lonnet::allowed('c'.$role_code,$1)) {
                            $allows=1;                             $allowed=1;
                         }                         }
                      } else {                     } else {
                         if (&Apache::lonnet::allowed('c'.$role_code,'/')) {                         if (&Apache::lonnet::allowed('c'.$role_code,'/')) {
                            $allows=1;                             $allowed=1;
                         }                         }
                      }                     }
                  }                 }
                  $r->print('<tr bgcolor=#"'.$bgcol.'"><td>');                 # I have no idea what the hell the above code does
                  my $active=1;                 # So the following is a check:
                  $active=0 if (($role_end_time) && ($now>$role_end_time));                 if ($allowed) {
                  if (($active) && ($allows)) {                     # If we are looking at a co-author role, make sure it is 
                     $r->print('<input type="checkbox" name="rev:'                     # for the current users construction space before we let 
                               .$thisrole.'">');                     # them revoke it.
                  } else {                     if (($role_code eq 'ca') && 
                     $r->print('&nbsp;');                         ($ENV{'request.role'} !~ /^dc/)) {
                  }                         if ($area !~ 
                  $r->print('</td><td>'.                             /^\/$ENV{'user.domain'}\/$ENV{'user.name'}/) {
                            &Apache::lonnet::plaintext($role_code).                             $allowed = 0;
                            '</td><td>'.$area.'</td><td>'.                         }
                            ($role_start_time ? localtime($role_start_time)                     }
                                              : '&nbsp;' )                 }
                            .'</td><td>'.                 my $row = '';
                            ($role_end_time   ? localtime($role_end_time)                 $row.='<tr bgcolor=#"'.$bgcol.'"><td>';
                                              : '&nbsp;' )                 my $active=1;
                            ."</td></tr>\n");                 $active=0 if (($role_end_time) && ($now>$role_end_time));
               }                 if (($active) && ($allowed)) {
                      $row.= '<input type="checkbox" name="rev:'.$thisrole.'">';
                  } else {
                      $row.='&nbsp;';
                  }
                  $row.= '</td><td>'.&Apache::lonnet::plaintext($role_code).
                         '</td><td>'.$area.
                         '</td><td>'.($role_start_time?localtime($role_start_time)
                                                      : '&nbsp;' ).
                         '</td><td>'.($role_end_time  ?localtime($role_end_time)
                                                      : '&nbsp;' )
                         ."</td></tr>\n";
                  $r->print($row);
            } # end of foreach        (table building loop)             } # end of foreach        (table building loop)
    $r->print('</table>');     $r->print('</table>');
         }  # End of unless          }  # End of unless
Line 532  ENDTHREEHEAD Line 547  ENDTHREEHEAD
  $amode='localauth';   $amode='localauth';
  $genpwd=$ENV{'form.locarg'};   $genpwd=$ENV{'form.locarg'};
  $genpwd=" " if (!$genpwd);   $genpwd=" " if (!$genpwd);
       } elsif (($ENV{'form.login'} eq 'nochange') ||
                ($ENV{'form.login'} eq ''        )) { 
           # There is no need to tell the user we did not change what they
           # did not ask us to change.
           # If they are creating a new user but have not specified login
           # information this will be caught below.
     } else {      } else {
     $r->print($error.'Invalid login mode or password'.$end);          $r->print($error.'Invalid login mode or password'.$end);    
     return;      return;
Line 552  ENDNEWUSERHEAD Line 573  ENDNEWUSERHEAD
         if (lc($desiredhost) eq 'default') {          if (lc($desiredhost) eq 'default') {
             $desiredhost = undef;              $desiredhost = undef;
         } else {          } else {
             my %home_servers = &get_home_servers($ENV{'form.ccdomain'});                my %home_servers = &Apache::loncommon::get_home_servers
                   ($ENV{'form.ccdomain'});  
             if (! exists($home_servers{$desiredhost})) {              if (! exists($home_servers{$desiredhost})) {
                 $r->print($error.'Invalid home server specified');                  $r->print($error.'Invalid home server specified');
                 return;                  return;
Line 570  ENDNEWUSERHEAD Line 592  ENDNEWUSERHEAD
                                                $ENV{'form.ccdomain'});                                                 $ENV{'form.ccdomain'});
         $r->print('<br>Home server: '.$home.' '.          $r->print('<br>Home server: '.$home.' '.
                   $Apache::lonnet::libserv{$home});                    $Apache::lonnet::libserv{$home});
     } elsif ($ENV{'form.login'} ne '') {      } elsif (($ENV{'form.login'} ne 'nochange') &&
                ($ENV{'form.login'} ne ''        )) {
  # Modify user privileges   # Modify user privileges
  $r->print(<<ENDMODIFYUSERHEAD);   $r->print(<<ENDMODIFYUSERHEAD);
 <h1>Change User Privileges</h1>  <h1>Change User Privileges</h1>
Line 581  ENDMODIFYUSERHEAD Line 604  ENDMODIFYUSERHEAD
     return;      return;
  }   }
  # Only allow authentification modification if the person has authority   # Only allow authentification modification if the person has authority
  if (&Apache::lonnet::allowed('mau',$ENV{'user.domain'})) {   if (&Apache::lonnet::allowed('mau',$ENV{'form.ccdomain'})) {
     $r->print('Modifying authentication: '.      $r->print('Modifying authentication: '.
                       &Apache::lonnet::modifyuserauth(                        &Apache::lonnet::modifyuserauth(
        $ENV{'form.ccdomain'},$ENV{'form.ccuname'},         $ENV{'form.ccdomain'},$ENV{'form.ccuname'},
Line 832  ENDTABLE Line 855  ENDTABLE
 #---------------------------------------------- end functions for &phase_two  #---------------------------------------------- end functions for &phase_two
   
 #--------------------------------- functions for &phase_two and &phase_three  #--------------------------------- functions for &phase_two and &phase_three
 sub get_home_servers {  
     my $domain = shift;  
     my %home_servers;  
     foreach (keys(%Apache::lonnet::libserv)) {  
         if ($Apache::lonnet::hostdom{$_} eq $domain) {  
             $home_servers{$_} = $Apache::lonnet::hostname{$_};  
         }  
     }  
     return %home_servers;  
 }  
   
 #--------------------------end of functions for &phase_two and &phase_three  #--------------------------end of functions for &phase_two and &phase_three
   

Removed from v.1.31  
changed lines
  Added in v.1.38


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