Diff for /loncom/interface/loncreateuser.pm between versions 1.19 and 1.20

version 1.19, 2001/10/16 21:16:01 version 1.20, 2001/11/16 06:23:11
Line 1 Line 1
 # The LearningOnline Network  # The LearningOnline Network with CAPA
 # Create a user  # Create a user
 #  #
 # (Create a course  # (Create a course
Line 10 Line 10
 # 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14,  # 5/21/99,5/22,5/25,5/26,5/31,6/2,6/10,7/12,7/14,
 # 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer)  # 1/14/00,5/29,5/30,6/1,6/29,7/1,11/9 Gerd Kortemeyer)
 #  #
   # YEAR=2001
 # 3/1/1 Gerd Kortemeyer)  # 3/1/1 Gerd Kortemeyer)
 #  #
 # 3/1 Gerd Kortemeyer)  # 3/1 Gerd Kortemeyer)
Line 19 Line 20
 # 2/14,2/17,2/19,2/20,2/21,2/22,2/23,3/2,3/17,3/24,04/12 Gerd Kortemeyer  # 2/14,2/17,2/19,2/20,2/21,2/22,2/23,3/2,3/17,3/24,04/12 Gerd Kortemeyer
 # April Guy Albertelli  # April Guy Albertelli
 # 05/10,10/16 Gerd Kortemeyer   # 05/10,10/16 Gerd Kortemeyer 
   # 11/12,11/13,11/15 Scott Harrison
 #  #
   # $Id$
   ###
   
 package Apache::loncreateuser;  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;
   
   my $loginscript; # piece of javascript used in two separate instances
   my $generalrule;
   my $authformnop;
   my $authformkrb;
   my $authformint;
   my $authformfsys;
   my $authformloc;
   
   sub BEGIN {
       $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
       my $krbdefdom=$1;
       $krbdefdom=~tr/a-z/A-Z/;
       $authformnop=(<<END);
   <p>
   <input type=radio name=login value=nop checked='checked'
   onClick="clicknop(this.form);">
   Do not change login data
   </p>
   END
       $authformkrb=(<<END);
   <p>
   <input type=radio name=login value=krb onClick="clickkrb(this.form);">
   Kerberos authenticated with domain
   <input type=text size=10 name=krbdom onChange="setkrb(this.form);">
   </p>
   END
       $authformint=(<<END);
   <p>
   <input type=radio name=login value=int onClick="clickint(this.form);"> 
   Internally authenticated (with initial password 
   <input type=text size=10 name=intpwd onChange="setint(this.form);">)
   </p>
   END
       $authformfsys=(<<END);
   <p>
   <input type=radio name=login value=fsys onClick="clickfsys(this.form);"> 
   Filesystem authenticated (with initial password 
   <input type=text size=10 name=fsyspwd onChange="setfsys(this.form);">)
   </p>
   END
       $authformloc=(<<END);
   <p>
   <input type=radio name=login value=loc onClick="clickloc(this.form);" />
   Local Authentication with argument
   <input type=text size=10 name=locarg onChange="setloc(this.form);" />
   </p>
   END
       $loginscript=(<<ENDLOGINSCRIPT);
   <script>
   function setkrb(vf) {
       if (vf.krbdom.value!='') {
          vf.login[0].checked=true;
          vf.krbdom.value=vf.krbdom.value.toUpperCase();
          vf.intpwd.value='';
          vf.fsyspwd.value='';
          vf.locarg.value='';
      }
   }
   
   function setint(vf) {
       if (vf.intpwd.value!='') {
          vf.login[1].checked=true;
          vf.krbdom.value='';
          vf.fsyspwd.value='';
          vf.locarg.value='';
      }
   }
   
   function setfsys(vf) {
       if (vf.fsyspwd.value!='') {
          vf.login[2].checked=true;
          vf.krbdom.value='';
          vf.intpwd.value='';
          vf.locarg.value='';
      }
   }
   
   function setloc(vf) {
       if (vf.locarg.value!='') {
          vf.login[3].checked=true;
          vf.krbdom.value='';
          vf.intpwd.value='';
          vf.fsyspwd.value='';
      }
   }
   
   function clicknop(vf) {
       vf.krbdom.value='';
       vf.intpwd.value='';
       vf.fsyspwd.value='';
       vf.locarg.value='';
   }
   
   function clickkrb(vf) {
       vf.krbdom.value='$krbdefdom';
       vf.intpwd.value='';
       vf.fsyspwd.value='';
       vf.locarg.value='';
   }
   
   function clickint(vf) {
       vf.krbdom.value='';
       vf.fsyspwd.value='';
       vf.locarg.value='';
   }
   
   function clickfsys(vf) {
       vf.krbdom.value='';
       vf.intpwd.value='';
       vf.locarg.value='';
   }
   
   function clickloc(vf) {
       vf.krbdom.value='';
       vf.intpwd.value='';
       vf.fsyspwd.value='';
   }
   </script>
   ENDLOGINSCRIPT
       $generalrule=<<END;
   <p>
   <i>As a general rule, only authors or co-authors should be filesystem
   authenticated (which allows access to the server filesystem).</i>
   </p>
   END
   }
   
 # =================================================================== Phase one  # =================================================================== Phase one
   
 sub phase_one {  sub phase_one {
Line 121  ENDENHEAD Line 253  ENDENHEAD
     if ($uhome eq 'no_host') {      if ($uhome eq 'no_host') {
  $r->print(<<ENDNUSER);   $r->print(<<ENDNUSER);
 <h2>New user $ccuname at $ccdomain</h2>  <h2>New user $ccuname at $ccdomain</h2>
 <script>  ENDNUSER
 function setkrb(vf) {   $r->print(<<ENDNUSER);
     if (vf.krbdom.value!='') {  $loginscript
        vf.login[0].checked=true;  <input type='hidden' name='makeuser' value='1' />
        vf.krbdom.value=vf.krbdom.value.toUpperCase();  
        vf.intpwd.value='';  
        vf.locarg.value='';  
    }  
 }  
   
 function setint(vf) {  
     if (vf.intpwd.value!='') {  
        vf.login[1].checked=true;  
        vf.krbdom.value='';  
        vf.locarg.value='';  
    }  
 }  
   
 function setloc(vf) {  
     if (vf.locarg.value!='') {  
        vf.login[2].checked=true;  
        vf.krbdom.value='';  
        vf.intpwd.value='';  
    }  
 }  
   
 function clickkrb(vf) {  
     vf.krbdom.value='$krbdefdom';  
     vf.intpwd.value='';  
     vf.locarg.value='';  
 }  
   
 function clickint(vf) {  
     vf.krbdom.value='';  
     vf.locarg.value='';  
 }  
   
 function clickloc(vf) {  
     vf.krbdom.value='';  
     vf.intpwd.value='';  
 }  
 </script>  
 <input type=hidden name=makeuser value=1>  
 <h3>Personal Data</h3>  <h3>Personal Data</h3>
 First Name: <input type=text name=cfirst size=15><br>  First Name: <input type='text' name='cfirst' size='15' /><br />
 Middle Name: <input type=text name=cmiddle size=15><br>  Middle Name: <input type='text' name='cmiddle' size='15' /><br />
 Last Name: <input type=text name=clast size=15><br>  Last Name: <input type='text' name='clast' size='15' /><br />
 Generation: <input type=text name=cgen size=5><p>  Generation: <input type='text' name='cgen' size='5' /><p>
   
 ID/Student Number: <input type=text name=cstid size=10><p>  ID/Student Number: <input type='text' name='cstid' size='10' /></p>
   
 <h3>Login Data</h3>  <h3>Login Data</h3>
 <input type=radio name=login value=krb onClick="clickkrb(this.form);">  $generalrule
 Kerberos authenticated with domain  $authformkrb
 <input type=text size=10 name=krbdom onChange="setkrb(this.form);"><p>  $authformint
 <input type=radio name=login value=int onClick="clickint(this.form);">   $authformfsys
 Internally authenticated (with initial password   $authformloc
 <input type=text size=10 name=intpwd onChange="setint(this.form);">)  
 <p>  
 <input type=radio name=login value=loc onClick="clickloc(this.form);" />  
 Local Authentication with argument  
 <input type=text size=10 name=locarg onChange="setloc(this.form);" />  
 </p>  
 ENDNUSER  ENDNUSER
     } else {      } else {
  $r->print('<h2>Existing user '.$ccuname.' at '.$ccdomain.'</h2>');   $r->print('<h2>Existing user '.$ccuname.' at '.$ccdomain.'</h2>');
Line 252  ENDNUSER Line 339  ENDNUSER
    } split(/&/,$rolesdump);     } split(/&/,$rolesdump);
    $r->print('</table>');     $r->print('</table>');
          }              }   
    my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
    if ($currentauth=~/^krb4:/) {
       $currentauth=~/^krb4:(.*)/;
       my $krbdefdom2=$1;
       $loginscript=~s/vf\.krbdom\.value='.*?';/vf.krbdom.value='$krbdefdom2';/;
    }
    # minor script hack here
    $loginscript=~s/login\[3\]/login\[4\]/;
    $loginscript=~s/login\[2\]/login\[3\]/;
    $loginscript=~s/login\[1\]/login\[2\]/;
    $loginscript=~s/login\[0\]/login\[1\]/;
   
    $r->print(<<END);
   <hr />
   $loginscript
   END
           unless ($currentauth=~/^krb4:/ or
    $currentauth=~/^unix:/ or
    $currentauth=~/^internal:/ or
    $currentauth=~/^localauth:/
    ) {
       $r->print(<<END);
   <font color='#ff0000'>ERROR:</font>
   This user has an unrecognized authentication scheme ($currentauth).
   Please specify login data below.
   <h3>Login Data</h3>
   $generalrule
   $authformkrb
   $authformint
   $authformfsys
   $authformloc
   END
           }
    else {
       my $authformcurrent='';
       my $authformother='';
       if ($currentauth=~/^krb4:/) {
    $authformcurrent=$authformkrb;
    $authformother=$authformint.$authformfsys.$authformloc;
       }
       elsif ($currentauth=~/^internal:/) {
    $authformcurrent=$authformint;
    $authformother=$authformkrb.$authformfsys.$authformloc;
       }
       elsif ($currentauth=~/^unix:/) {
    $authformcurrent=$authformfsys;
    $authformother=$authformkrb.$authformint.$authformloc;
       }
       elsif ($currentauth=~/^localauth:/) {
    $authformcurrent=$authformloc;
    $authformother=$authformkrb.$authformint.$authformfsys;
       }
       $authformcurrent=<<END;
   <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>
   END
    $r->print(<<END);
   <h3>Change Current Login Data</h3>
   $generalrule
   $authformnop
   $authformcurrent
   <h3>Enter New Login Data</h3>
   $authformother
   END
          }
     }      }
     $r->print('<hr><h3>Add Roles</h3>');      $r->print('<hr /><h3>Add Roles</h3>');
 #  #
 # Co-Author  # Co-Author
 #   # 
Line 377  ENDTHREEHEAD Line 535  ENDTHREEHEAD
         } elsif ($ENV{'form.login'} eq 'int') {          } elsif ($ENV{'form.login'} eq 'int') {
            $amode='internal';             $amode='internal';
            $genpwd=$ENV{'form.intpwd'};             $genpwd=$ENV{'form.intpwd'};
           } elsif ($ENV{'form.login'} eq 'fsys') {
              $amode='unix';
              $genpwd=$ENV{'form.fsyspwd'};
         } elsif ($ENV{'form.login'} eq 'loc') {          } elsif ($ENV{'form.login'} eq 'loc') {
     $amode='localauth';      $amode='localauth';
     $genpwd=$ENV{'form.locarg'};      $genpwd=$ENV{'form.locarg'};
Line 392  ENDTHREEHEAD Line 553  ENDTHREEHEAD
                       ($ENV{'form.cuname'},$ENV{'form.cdomain'}));                        ($ENV{'form.cuname'},$ENV{'form.cdomain'}));
   
  } else {   } else {
              $r->print('Invalid login mode or password');    
           }          
       } else {
           $r->print('Invalid username or domain');
       }
      }
      if (!$ENV{'form.makeuser'} and $ENV{'form.login'} ne 'nop') {
       $r->print('<h3>Changing User Login Data</h3>');
       if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&&
           ($ENV{'form.cdomain'})&&($ENV{'form.cdomain'}!~/\W/)) {
    my $amode='';
           my $genpwd='';
           if ($ENV{'form.login'} eq 'krb') {
              $amode='krb4';
              $genpwd=$ENV{'form.krbdom'};
           } elsif ($ENV{'form.login'} eq 'int') {
              $amode='internal';
              $genpwd=$ENV{'form.intpwd'};
           } elsif ($ENV{'form.login'} eq 'fsys') {
              $amode='unix';
              $genpwd=$ENV{'form.fsyspwd'};
           } elsif ($ENV{'form.login'} eq 'loc') {
       $amode='localauth';
       $genpwd=$ENV{'form.locarg'};
       if (!$genpwd) { $genpwd=" "; }
    }
           if (($amode) && ($genpwd)) {
       $r->print('Modifying authentication: '.
    &Apache::lonnet::modifyuserauth(
          $ENV{'form.cdomain'},$ENV{'form.cuname'},
                          $amode,$genpwd);
               $r->print('<br>Home server: '.&Apache::lonnet::homeserver
                         ($ENV{'form.cuname'},$ENV{'form.cdomain'}));
   
    } else {
            $r->print('Invalid login mode or password');                 $r->print('Invalid login mode or password');    
         }                    }          
     } else {      } else {

Removed from v.1.19  
changed lines
  Added in v.1.20


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