Diff for /loncom/interface/loncreateuser.pm between versions 1.51 and 1.58

version 1.51, 2003/03/23 09:06:08 version 1.58, 2003/07/17 18:14:41
Line 54  package Apache::loncreateuser; Line 54  package Apache::loncreateuser;
 use strict;  use strict;
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::loncommon;
   
 my $loginscript; # piece of javascript used in two separate instances  my $loginscript; # piece of javascript used in two separate instances
 my $generalrule;  my $generalrule;
Line 115  $selscript Line 116  $selscript
 $bodytag  $bodytag
 <form action="/adm/createuser" method="post" name="crtuser">  <form action="/adm/createuser" method="post" name="crtuser">
 <input type="hidden" name="phase" value="get_user_info">  <input type="hidden" name="phase" value="get_user_info">
 <p>  <h2>Set Individual User Roles</h2>
 <table>  <table>
 <tr><td>Username:</td><td><input type="text" size="15" name="ccuname">  <tr><td>Username:</td><td><input type="text" size="15" name="ccuname">
 </td><td rowspan="2">$sellink</td></tr><tr><td>  </td><td rowspan="2">$sellink</td></tr><tr><td>
 Domain:</td><td>$domform</td></tr>  Domain:</td><td>$domform</td></tr>
 </table>   </table>
 </p>  <input name="userrole" type="submit" value="User Roles" />
 <input type="submit" value="Continue">  
 </form>  </form>
   <form action="/adm/createuser" method="post" name="docustom">
   <input type="hidden" name="phase" value="selected_custom_edit">
   <h2>Edit Custom Role Privileges</h2>
   Name of Role: <input type="text" size="15" name="rolename" /><br />
   <input name="customeditor" type="submit" value="Custom Role Editor" />
 </body>  </body>
 </html>  </html>
 ENDDOCUMENT  ENDDOCUMENT
Line 135  sub print_user_modification_page { Line 140  sub print_user_modification_page {
     my $ccuname=$ENV{'form.ccuname'};      my $ccuname=$ENV{'form.ccuname'};
     my $ccdomain=$ENV{'form.ccdomain'};      my $ccdomain=$ENV{'form.ccdomain'};
   
       $ccuname=~s/\W//gs;
       $ccdomain=~s/\W//gs;
   
       unless (($ccuname) && ($ccdomain)) {
    &print_username_entry_form($r);
           return;
       }
   
     my $defdom=$ENV{'request.role.domain'};      my $defdom=$ENV{'request.role.domain'};
   
     my ($krbdef,$krbdefdom) =      my ($krbdef,$krbdefdom) =
Line 149  sub print_user_modification_page { Line 162  sub print_user_modification_page {
   
     $ccuname=~s/\W//g;      $ccuname=~s/\W//g;
     $ccdomain=~s/\W//g;      $ccdomain=~s/\W//g;
       my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
     my $dochead =<<"ENDDOCHEAD";      my $dochead =<<"ENDDOCHEAD";
 <html>  <html>
 <head>  <head>
Line 161  sub print_user_modification_page { Line 175  sub print_user_modification_page {
         parmwin.close();          parmwin.close();
     }      }
   
     function pjump(type,dis,value,marker,ret,call) {      $pjump_def
         parmwin=window.open("/adm/rat/parameter.html?type="+escape(type)  
                  +"&value="+escape(value)+"&marker="+escape(marker)  
                  +"&return="+escape(ret)  
                  +"&call="+escape(call)+"&name="+escape(dis),"LONCAPAparms",  
                  "height=350,width=350,scrollbars=no,menubar=no");  
   
     }  
   
     function dateset() {      function dateset() {
         eval("document.cu."+document.cu.pres_marker.value+          eval("document.cu."+document.cu.pres_marker.value+
Line 260  END Line 267  END
         foreach ('firstname','middlename','lastname','generation') {          foreach ('firstname','middlename','lastname','generation') {
            if (&Apache::lonnet::allowed('mau',$ccdomain)) {             if (&Apache::lonnet::allowed('mau',$ccdomain)) {
               $r->print(<<"END");                            $r->print(<<"END");            
 <td><input type="text" name="c$_" value="$userenv{$_}" size="15"/></td>  <td><input type="text" name="c$_" value="$userenv{$_}" size="15" /></td>
 END  END
            } else {             } else {
                $r->print('<td>'.$userenv{$_}.'</td>');                 $r->print('<td>'.$userenv{$_}.'</td>');
Line 278  END Line 285  END
 <hr />  <hr />
 <h3>Revoke Existing Roles</h3>  <h3>Revoke Existing Roles</h3>
 <table border=2>  <table border=2>
 <tr><th>Revoke</th><th>Role</th><th>Extent</th><th>Start</th><th>End</th>  <tr><th>Revoke</th><th>Delete</th><th>Role</th><th>Extent</th><th>Start</th><th>End</th>
 END  END
    foreach my $area (keys(%rolesdump)) {     foreach my $area (keys(%rolesdump)) {
                next if ($area =~ /^rolesdef/);                 next if ($area =~ /^rolesdef/);
Line 289  END Line 296  END
                    split(/_/,$role);                     split(/_/,$role);
                my $bgcol='ffffff';                 my $bgcol='ffffff';
                my $allowed=0;                 my $allowed=0;
                  my $delallowed=0;
                if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {                 if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {
                      my ($coursedom,$coursedir) = ($1,$2);
                      # $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).
                    my %coursedata=                     my %coursedata=
                        &Apache::lonnet::coursedescription($1.'_'.$2);                         &Apache::lonnet::coursedescription($1.'_'.$2);
    my $carea;     my $carea;
    if (defined($coursedata{'description'})) {     if (defined($coursedata{'description'})) {
        $carea='Course: '.$coursedata{'description'};         $carea='Course: '.$coursedata{'description'}.
                              '<br />Domain: '.$coursedom.('&nbsp;'x8).
        &Apache::loncommon::syllabuswrapper('Syllabus',$coursedir,$coursedom);
    } else {     } else {
        $carea='Unavailable course: '.$area;         $carea='Unavailable course: '.$area;
    }     }
                    $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)) ||
                          (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
                        $allowed=1;                         $allowed=1;
                    }                     }
                      if ((&Apache::lonnet::allowed('dro',$1)) ||
                          (&Apache::lonnet::allowed('dro',$ccdomain))) {
                          $delallowed=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;
Line 313  END Line 330  END
                } 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)) ||
                          (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
                            $allowed=1;                             $allowed=1;
                        }                         }
                          if (((&Apache::lonnet::allowed('dro',$1))  ||
                               (&Apache::lonnet::allowed('dro',$ccdomain))) &&
                              ($role_code ne 'dc')) {
                              $delallowed=1;
                          }
                    } else {                     } else {
                        if (&Apache::lonnet::allowed('c'.$role_code,'/')) {                         if (&Apache::lonnet::allowed('c'.$role_code,'/')) {
                            $allowed=1;                             $allowed=1;
Line 337  END Line 360  END
                if (($active) && ($allowed)) {                 if (($active) && ($allowed)) {
                    $row.= '<input type="checkbox" name="rev:'.$thisrole.'">';                     $row.= '<input type="checkbox" name="rev:'.$thisrole.'">';
                } else {                 } else {
                      if ($active) {
                         $row.='&nbsp;';
      } else {
                         $row.='expired or revoked';
      }
                  }
          $row.='</td><td>';
                  if ($delallowed) {
                      $row.= '<input type="checkbox" name="del:'.$thisrole.'">';
                  } else {
                    $row.='&nbsp;';                     $row.='&nbsp;';
                }                 }
                $row.= '</td><td>'.&Apache::lonnet::plaintext($role_code).                 $row.= '</td><td>'.&Apache::lonnet::plaintext($role_code).
Line 418  ENDBADAUTH Line 451  ENDBADAUTH
  $authform_other="<p>$authformkrb</p>".   $authform_other="<p>$authformkrb</p>".
                     "<p>$authformint</p><p>$authformfsys</p>";                      "<p>$authformint</p><p>$authformfsys</p>";
     }      }
     $authformcurrent=<<ENDCURRENTAUTH;              $authformcurrent.=' <i>(will override current values)</i><br />';
 <table border='1'>  
 <tr>  
 <td><font color='#ff0000'>* * * WARNING * * *</font></td>  
 <td><font color='#ff0000'>* * * WARNING * * *</font></td>  
 </tr>  
 <tr><td bgcolor='#cbbcbb'>$authformcurrent</td>  
 <td bgcolor='#cbbcbb'>Changing this value will overwrite existing authentication for the user; you should notify the user of this change.</td></tr>  
 </table>  
 ENDCURRENTAUTH  
             if (&Apache::lonnet::allowed('mau',$ENV{'request.role.domain'})) {              if (&Apache::lonnet::allowed('mau',$ENV{'request.role.domain'})) {
  # Current user has login modification privileges   # Current user has login modification privileges
  $r->print(<<ENDOTHERAUTHS);   $r->print(<<ENDOTHERAUTHS);
Line 719  END Line 743  END
  # Revoke roles   # Revoke roles
  if ($_=~/^form\.rev/) {   if ($_=~/^form\.rev/) {
     if ($_=~/^form\.rev\:([^\_]+)\_([^\_]+)$/) {      if ($_=~/^form\.rev\:([^\_]+)\_([^\_]+)$/) {
         $r->print('Revoking '.$2.' in '.$1.': '.          $r->print('Revoking '.$2.' in '.$1.': <b>'.
                        &Apache::lonnet::assignrole($ENV{'form.ccdomain'},
                        $ENV{'form.ccuname'},$1,$2,$now).'</b><br>');
    if ($2 eq 'st') {
       $1=~/^\/(\w+)\/(\w+)/;
       my $cid=$1.'_'.$2;
       $r->print('Drop from classlist: <b>'.
    &Apache::lonnet::critical('put:'.
                                $ENV{'course.'.$cid.'.domain'}.':'.
                        $ENV{'course.'.$cid.'.num'}.':classlist:'.
                            &Apache::lonnet::escape($ENV{'form.ccuname'}.':'.
                                $ENV{'form.ccdomain'}).'='.
                            &Apache::lonnet::escape($now.':'),
                        $ENV{'course.'.$cid.'.home'}).'</b><br>');
    }
       } 
    } elsif ($_=~/^form\.del/) {
       if ($_=~/^form\.del\:([^\_]+)\_([^\_]+)$/) {
           $r->print('Deleting '.$2.' in '.$1.': '.
                      &Apache::lonnet::assignrole($ENV{'form.ccdomain'},                       &Apache::lonnet::assignrole($ENV{'form.ccdomain'},
                      $ENV{'form.ccuname'},$1,$2,$now).'<br>');                       $ENV{'form.ccuname'},$1,$2,$now,0,1).'<br>');
  if ($2 eq 'st') {   if ($2 eq 'st') {
     $1=~/^\/(\w+)\/(\w+)/;      $1=~/^\/(\w+)\/(\w+)/;
     my $cid=$1.'_'.$2;      my $cid=$1.'_'.$2;
     $r->print('Drop from classlist: '.      $r->print('Drop from classlist: <b>'.
  &Apache::lonnet::critical('put:'.   &Apache::lonnet::critical('put:'.
                              $ENV{'course.'.$cid.'.domain'}.':'.                               $ENV{'course.'.$cid.'.domain'}.':'.
                      $ENV{'course.'.$cid.'.num'}.':classlist:'.                       $ENV{'course.'.$cid.'.num'}.':classlist:'.
                          &Apache::lonnet::escape($ENV{'form.ccuname'}.':'.                           &Apache::lonnet::escape($ENV{'form.ccuname'}.':'.
                              $ENV{'form.ccdomain'}).'='.                               $ENV{'form.ccdomain'}).'='.
                          &Apache::lonnet::escape($now.':'),                           &Apache::lonnet::escape($now.':'),
                      $ENV{'course.'.$cid.'.home'}).'<br>');                       $ENV{'course.'.$cid.'.home'}).'</b><br>');
  }   }
     }       } 
  } elsif ($_=~/^form\.act/) {   } elsif ($_=~/^form\.act/) {
     if ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_([^\_]+)$/) {      if ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_([^\_]+)$/) {
  # Activate roles for sections with 3 id numbers   # Activate roles for sections with 3 id numbers
  # set start, end times, and the url for the class   # set start, end times, and the url for the class
  my $start = ( $ENV{'form.start_'.$1.'_'.$2} ?   
       $ENV{'form.start_'.$1.'_'.$2} :    my $start = ( $ENV{'form.start_'.$1.'_'.$2.'_'.$3} ? 
         $ENV{'form.start_'.$1.'_'.$2.'_'.$3} : 
       $now );        $now );
  my $end   = ( $ENV{'form.end_'.$1.'_'.$2} ?    my $end   = ( $ENV{'form.end_'.$1.'_'.$2.'_'.$3} ? 
       $ENV{'form.end_'.$1.'_'.$2} :        $ENV{'form.end_'.$1.'_'.$2.'_'.$3} :
       0 );        0 );
  my $url='/'.$1.'/'.$2;   my $url='/'.$1.'/'.$2;
  if ($ENV{'form.sec_'.$1.'_'.$2.'_'.$3}) {   if ($ENV{'form.sec_'.$1.'_'.$2.'_'.$3}) {
     $url.='/'.$ENV{'form.sec_'.$1.'_'.$2.'_'.$3};      $url.='/'.$ENV{'form.sec_'.$1.'_'.$2.'_'.$3};
  }   }
  # Assign the role and report it   # Assign the role and report it
  $r->print('Assigning: '.$3.' in '.$url.': '.   $r->print('Assigning: '.$3.' in '.$url.
                            ($start?', starting '.localtime($start):'').
                            ($end?', ending '.localtime($end):'').': <b>'.
                           &Apache::lonnet::assignrole(                            &Apache::lonnet::assignrole(
                               $ENV{'form.ccdomain'},$ENV{'form.ccuname'},                                $ENV{'form.ccdomain'},$ENV{'form.ccuname'},
                               $url,$3,$end,$start).                                $url,$3,$end,$start).
   '<br>');    '</b><br>');
  # Handle students differently   # Handle students differently
  if ($3 eq 'st') {   if ($3 eq 'st') {
     $url=~/^\/(\w+)\/(\w+)/;      $url=~/^\/(\w+)\/(\w+)/;
     my $cid=$1.'_'.$2;      my $cid=$1.'_'.$2;
     $r->print('Add to classlist: '.      $r->print('Add to classlist: <b>'.
       &Apache::lonnet::critical(        &Apache::lonnet::critical(
   'put:'.$ENV{'course.'.$cid.'.domain'}.':'.    'put:'.$ENV{'course.'.$cid.'.domain'}.':'.
                            $ENV{'course.'.$cid.'.num'}.':classlist:'.                             $ENV{'course.'.$cid.'.num'}.':classlist:'.
Line 768  END Line 813  END
                                        $ENV{'form.ccdomain'} ).'='.                                         $ENV{'form.ccdomain'} ).'='.
                                    &Apache::lonnet::escape($end.':'.$start),                                     &Apache::lonnet::escape($end.':'.$start),
        $ENV{'course.'.$cid.'.home'})         $ENV{'course.'.$cid.'.home'})
       .'<br>');        .'</b><br>');
  }   }
     } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {      } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {
  # Activate roles for sections with two id numbers   # Activate roles for sections with two id numbers
Line 782  END Line 827  END
  my $url='/'.$1.'/';   my $url='/'.$1.'/';
  # Assign the role and report it.   # Assign the role and report it.
  $r->print('Assigning: '.$2.' in '.$url.': '.   $r->print('Assigning: '.$2.' in '.$url.': '.
                            ($start?', starting '.localtime($start):'').
                            ($end?', ending '.localtime($end):'').': <b>'.
                           &Apache::lonnet::assignrole(                            &Apache::lonnet::assignrole(
                               $ENV{'form.ccdomain'},$ENV{'form.ccuname'},                                $ENV{'form.ccdomain'},$ENV{'form.ccuname'},
                               $url,$2,$end,$start)                                $url,$2,$end,$start)
   .'<br>');    .'</b><br>');
     }      }
  }    } 
     } # End of foreach (keys(%ENV))      } # End of foreach (keys(%ENV))
     $r->print('</body></html>');      $r->print('</body></html>');
 }  }
   
   # ========================================================== Custom Role Editor
   
   sub custom_role_editor {
       my $r=shift;
       my $rolename=$ENV{'form.rolename'};
   
       $rolename=~s/\W//gs;
   
       unless ($rolename) {
    &print_username_entry_form($r);
           return;
       }
   
       $r->print(&Apache::loncommon::bodytag(
                                        'Create Users, Change User Privileges'));
      $r->print('Not yet implemented.');
   }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 817  sub handler { Line 882  sub handler {
            &print_user_modification_page($r);             &print_user_modification_page($r);
        } elsif ($ENV{'form.phase'} eq 'update_user_data') {         } elsif ($ENV{'form.phase'} eq 'update_user_data') {
            &update_user_data($r);             &update_user_data($r);
          } elsif ($ENV{'form.phase'} eq 'selected_custom_edit') {
              &custom_role_editor($r);
        }         }
    } else {     } else {
       $ENV{'user.error.msg'}=        $ENV{'user.error.msg'}=

Removed from v.1.51  
changed lines
  Added in v.1.58


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