--- loncom/interface/loncreateuser.pm 2001/11/16 06:23:11 1.20
+++ loncom/interface/loncreateuser.pm 2002/02/11 21:25:07 1.26
@@ -1,6 +1,30 @@
# The LearningOnline Network with CAPA
# Create a user
#
+# $Id: loncreateuser.pm,v 1.26 2002/02/11 21:25:07 matthew Exp $
+#
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
# (Create a course
# (My Desk
#
@@ -21,8 +45,9 @@
# April Guy Albertelli
# 05/10,10/16 Gerd Kortemeyer
# 11/12,11/13,11/15 Scott Harrison
+# 02/11/02 Matthew Hall
#
-# $Id: loncreateuser.pm,v 1.20 2001/11/16 06:23:11 harris41 Exp $
+# $Id: loncreateuser.pm,v 1.26 2002/02/11 21:25:07 matthew Exp $
###
package Apache::loncreateuser;
@@ -39,7 +64,7 @@ my $authformint;
my $authformfsys;
my $authformloc;
-sub BEGIN {
+BEGIN {
$ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
my $krbdefdom=$1;
$krbdefdom=~tr/a-z/A-Z/;
@@ -182,7 +207,6 @@ ENDDOCUMENT
}
# =================================================================== Phase two
-
sub phase_two {
my $r=shift;
my $ccuname=$ENV{'form.ccuname'};
@@ -196,7 +220,7 @@ sub phase_two {
$ccuname=~s/\W//g;
$ccdomain=~s/\W//g;
- $r->print(<The LearningOnline Network with CAPA
@@ -226,44 +250,53 @@ sub phase_two {
-
-
');
-
+ENDNEWUSER
+ } else { # user already exists
+ $r->print(<Change User Privileges
+$forminfo
+
User "$ccuname" in domain $ccdomain
+ENDCHANGEUSER
my $rolesdump=&Apache::lonnet::reply(
"dump:$ccdomain:$ccuname:roles",$uhome);
- unless ($rolesdump eq 'con_lost') {
+ # Build up table of user roles to allow revocation of a role.
+ unless ($rolesdump eq 'con_lost' || $rolesdump =~ m/^error/i) {
my $now=time;
- $r->print('
Revoke Existing Roles
'.
+ $r->print('
Revoke Existing Roles
'.
'
Revoke
Role
Extent
'.
- '
Start
End
');
- map {
+ '
Start
End
');
+ foreach (split(/&/,$rolesdump)) {
if ($_!~/^rolesdef\&/) {
-
my ($area,$role)=split(/=/,$_);
my $thisrole=$area;
$area=~s/\_\w\w$//;
- my ($trole,$tend,$tstart)=split(/_/,$role);
+ my ($role_code,$role_end_time,$role_start_time)=split(/_/,$role);
my $bgcol='ffffff';
my $allows=0;
if ($area=~/^\/(\w+)\/(\d\w+)/) {
my %coursedata=&Apache::lonnet::coursedescription($1.'_'.$2);
my $carea='Course: '.$coursedata{'description'};
$inccourses{$1.'_'.$2}=1;
- if (&Apache::lonnet::allowed('c'.$trole,$1.'/'.$2)) {
+ if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) {
$allows=1;
}
+ # Compute the background color based on $area
$bgcol=$1.'_'.$2;
$bgcol=~s/[^8-9b-e]//g;
$bgcol=substr($bgcol.$bgcol.$bgcol.'ffffff',0,6);
@@ -307,36 +345,34 @@ ENDNUSER
$area=$carea;
} else {
if ($area=~/^\/(\w+)\//) {
- if (&Apache::lonnet::allowed('c'.$trole,$1)) {
+ if (&Apache::lonnet::allowed('c'.$role_code,$1)) {
$allows=1;
}
} else {
- if (&Apache::lonnet::allowed('c'.$trole,'/')) {
+ if (&Apache::lonnet::allowed('c'.$role_code,'/')) {
$allows=1;
}
}
}
+ $r->print('
');
my $active=1;
- if (($tend) && ($now>$tend)) { $active=0; }
-
- $r->print('
');
}
my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
@@ -345,22 +381,16 @@ ENDNUSER
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(<
-$loginscript
-END
+ # Check for a bad authentication type
unless ($currentauth=~/^krb4:/ or
$currentauth=~/^unix:/ or
$currentauth=~/^internal:/ or
$currentauth=~/^localauth:/
- ) {
- $r->print(<print(<
+$loginscript
ERROR:
This user has an unrecognized authentication scheme ($currentauth).
Please specify login data below.
@@ -370,28 +400,60 @@ $authformkrb
$authformint
$authformfsys
$authformloc
-END
- }
- else {
+ENDBADAUTH
+ } else {
+ # This user is not allowed to modify the users
+ # authentication scheme, so just notify them of the problem
+ $r->print(<
+$loginscript
+ ERROR:
+This user has an unrecognized authentication scheme ($currentauth).
+Please alert a domain coordinator of this situation.
+
+ENDBADAUTH
+ }
+ } else { # Authentication type is valid
my $authformcurrent='';
- my $authformother='';
+ my $authform_other='';
if ($currentauth=~/^krb4:/) {
$authformcurrent=$authformkrb;
- $authformother=$authformint.$authformfsys.$authformloc;
+ $authform_other=$authformint.$authformfsys.$authformloc;
+ # embarrassing script hack here
+ $loginscript=~s/login\[3\]/login\[4\]/; # loc
+ $loginscript=~s/login\[2\]/login\[3\]/; # fsys
+ $loginscript=~s/login\[1\]/login\[2\]/; # int
+ $loginscript=~s/login\[0\]/login\[1\]/; # krb4
}
elsif ($currentauth=~/^internal:/) {
$authformcurrent=$authformint;
- $authformother=$authformkrb.$authformfsys.$authformloc;
+ $authform_other=$authformkrb.$authformfsys.$authformloc;
+ # embarrassing script hack here
+ $loginscript=~s/login\[3\]/login\[4\]/; # loc
+ $loginscript=~s/login\[2\]/login\[3\]/; # fsys
+ $loginscript=~s/login\[1\]/login\[1\]/; # int
+ $loginscript=~s/login\[0\]/login\[2\]/; # krb4
}
elsif ($currentauth=~/^unix:/) {
$authformcurrent=$authformfsys;
- $authformother=$authformkrb.$authformint.$authformloc;
+ $authform_other=$authformkrb.$authformint.$authformloc;
+ # embarrassing script hack here
+ $loginscript=~s/login\[3\]/login\[4\]/; # loc
+ $loginscript=~s/login\[1\]/login\[3\]/; # int
+ $loginscript=~s/login\[2\]/login\[1\]/; # fsys
+ $loginscript=~s/login\[0\]/login\[2\]/; # krb4
}
elsif ($currentauth=~/^localauth:/) {
$authformcurrent=$authformloc;
- $authformother=$authformkrb.$authformint.$authformfsys;
+ $authform_other=$authformkrb.$authformint.$authformfsys;
+ # embarrassing script hack here
+ $loginscript=~s/login\[3\]/login\[loc\]/; # loc
+ $loginscript=~s/login\[2\]/login\[4\]/; # fsys
+ $loginscript=~s/login\[1\]/login\[3\]/; # int
+ $loginscript=~s/login\[0\]/login\[2\]/; # krb4
+ $loginscript=~s/login\[loc\]/login\[1\]/; # loc
}
- $authformcurrent=<
* * * WARNING * * *
@@ -400,17 +462,22 @@ END
$authformcurrent
Changing this value will overwrite existing authentication for the user; you should notify the user of this change.
-END
- $r->print(<print(<
+$loginscript
Change Current Login Data
$generalrule
$authformnop
$authformcurrent
Enter New Login Data
-$authformother
-END
- }
- }
+$authform_other
+ENDOTHERAUTHS
+ }
+ } ## End of "check for bad authentication type" logic
+ } ## End of new user/old user logic
$r->print('