--- loncom/interface/loncreateuser.pm 2001/04/12 19:43:49 1.12
+++ loncom/interface/loncreateuser.pm 2003/07/19 00:51:05 1.63
@@ -1,72 +1,166 @@
-# The LearningOnline Network
+# The LearningOnline Network with CAPA
# Create a user
#
-# (Create a course
-# (My Desk
+# $Id: loncreateuser.pm,v 1.63 2003/07/19 00:51:05 www Exp $
#
-# (Internal Server Error Handler
+# Copyright Michigan State University Board of Trustees
#
-# (Login Screen
-# 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)
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
-# 3/1/1 Gerd Kortemeyer)
+# 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.
#
-# 3/1 Gerd Kortemeyer)
+# 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.
#
-# 2/14 Gerd Kortemeyer)
+# 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
#
-# 2/14,2/17,2/19,2/20,2/21,2/22,2/23,3/2,3/17,3/24,04/12 Gerd Kortemeyer
+# /home/httpd/html/adm/gpl.txt
#
+# http://www.lon-capa.org/
+#
+###
+
package Apache::loncreateuser;
use strict;
use Apache::Constants qw(:common :http);
use Apache::lonnet;
+use Apache::loncommon;
+
+my $loginscript; # piece of javascript used in two separate instances
+my $generalrule;
+my $authformnop;
+my $authformkrb;
+my $authformint;
+my $authformfsys;
+my $authformloc;
+
+BEGIN {
+ $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
+ my $krbdefdom=$1;
+ $krbdefdom=~tr/a-z/A-Z/;
+ my %param = ( formname => 'document.cu',
+ kerb_def_dom => $krbdefdom
+ );
+# no longer static due to configurable kerberos defaults
+# $loginscript = &Apache::loncommon::authform_header(%param);
+ $generalrule = &Apache::loncommon::authform_authorwarning(%param);
+ $authformnop = &Apache::loncommon::authform_nochange(%param);
+# no longer static due to configurable kerberos defaults
+# $authformkrb = &Apache::loncommon::authform_kerberos(%param);
+ $authformint = &Apache::loncommon::authform_internal(%param);
+ $authformfsys = &Apache::loncommon::authform_filesystem(%param);
+ $authformloc = &Apache::loncommon::authform_local(%param);
+}
+
+
+# ======================================================= Existing Custom Roles
+
+sub my_custom_roles {
+ my %returnhash=();
+ my %rolehash=&Apache::lonnet::dump('roles');
+ foreach (keys %rolehash) {
+ if ($_=~/^rolesdef\_(\w+)$/) {
+ $returnhash{$1}=$1;
+ }
+ }
+ return %returnhash;
+}
+
+# ==================================================== Figure out author access
+
+sub authorpriv {
+ my ($auname,$audom)=@_;
+ if (($auname ne $ENV{'user.name'}) ||
+ (($audom ne $ENV{'user.domain'}) &&
+ ($audom ne $ENV{'request.role.domain'}))) { return ''; }
+ unless (&Apache::lonnet::allowed('cca',$audom)) { return ''; }
+ return 1;
+}
# =================================================================== Phase one
-sub phase_one {
+sub print_username_entry_form {
my $r=shift;
- my $defdom=$ENV{'user.domain'};
- $r->print(<Create User, Change User Privileges
-
+
- -Internally authenticated (with initial password -) -ENDNUSER - } else { - $r->print('
$generalrule
+$authformkrb
+$authformint
+$authformfsys
+$authformloc
+ENDNEWUSER + } else { # user already exists + $r->print(<first name | middle name | last name | generation | +
---|---|---|---|
+END + } else { + $r->print(' | '.$userenv{$_}.' | '); + } + } + $r->print(<
Revoke | Role | Extent | '. - 'Start | End | '); - map { - if ($_!~/^rolesdef\&/) { - - my ($area,$role)=split(/=/,$_); - my $thisrole=$area; - $area=~s/\_\w\w$//; - my ($trole,$tend,$tstart)=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)) { - $allows=1; - } - $bgcol=$1.'_'.$2; - $bgcol=~s/[^8-9b-e]//g; - $bgcol=substr($bgcol.$bgcol.$bgcol.'ffffff',0,6); - if ($area=~/^\/(\w+)\/(\d\w+)\/(\w+)/) { - $carea.='|
---|---|---|---|---|---|
'); - if ($active) { - if ($allows) { - $r->print( - ''); - } else { - $r->print(' '); - } - } else { - $r->print(' '); - } - $r->print(' | '.&Apache::lonnet::plaintext($trole). - ' | '.$area.' | '. - ($tstart?localtime($tstart):' ').' | '. - ($tend?localtime($tend):' ')." |
Revoke | Delete | Role | Extent | Start | End | +END + foreach my $area (keys(%rolesdump)) { + next if ($area =~ /^rolesdef/); + my $role = $rolesdump{$area}; + my $thisrole=$area; + $area =~ s/\_\w\w$//; + my ($role_code,$role_end_time,$role_start_time) = + split(/_/,$role); + my $bgcol='ffffff'; + my $allowed=0; + my $delallowed=0; + if ($area =~ /^\/(\w+)\/(\d\w+)/ ) { + my ($coursedom,$coursedir) = ($1,$2); + # $1.'_'.$2 is the course id (eg. 103_12345abcef103l3). + my %coursedata= + &Apache::lonnet::coursedescription($1.'_'.$2); + my $carea; + if (defined($coursedata{'description'})) { + $carea='Course: '.$coursedata{'description'}. + '
---|---|---|---|---|---|
'; + my $active=1; + $active=0 if (($role_end_time) && ($now>$role_end_time)); + if (($active) && ($allowed)) { + $row.= ''; + } else { + if ($active) { + $row.=' '; + } else { + $row.='expired or revoked'; + } + } + $row.=' | '; + if ($delallowed) { + $row.= ''; + } else { + $row.=' '; + } + $row.= ' | '.&Apache::lonnet::plaintext($role_code). + ' | '.$area. + ' | '.($role_start_time?localtime($role_start_time) + : ' ' ). + ' | '.($role_end_time ?localtime($role_end_time) + : ' ' ) + ." |
$generalrule
+$authformkrb
+$authformint
+$authformfsys
+$authformloc
+ENDBADAUTH + } else { + # This user is not allowed to modify the users + # authentication scheme, so just notify them of the problem + $r->print(<$authformint
\n". + "$authformfsys
$authformloc
"; + } + elsif ($currentauth=~/^internal:/) { + $authformcurrent=$authformint; + $authform_other="$authformkrb
". + "$authformfsys
$authformloc
"; + } + elsif ($currentauth=~/^unix:/) { + $authformcurrent=$authformfsys; + $authform_other="$authformkrb
". + "$authformint
$authformloc;
"; + } + elsif ($currentauth=~/^localauth:/) { + $authformcurrent=$authformloc; + $authform_other="$authformkrb
". + "$authformint
$authformfsys
"; + } + $authformcurrent.=' (will override current values)$generalrule
+$authformnop
+$authformcurrent
+Activate | Role | Extent | +Start | End |
---|---|---|---|---|
+ | Co-Author | +$cudom\_$cuname | ++Set Start Date | ++Set End Date | +
Activate | Role | Extent | '. 'Start | End |
---|
Activate | Role | Extent | '. - 'Group/Section | Start | End | - | $plrole | -$area | -- | -Set Start Date | --Set End Date | - -ENDROW - - } - } ('st','ta','ep','ad','in','cc'); - } sort keys %inccourses; - $r->print('
---|