--- loncom/interface/loncreateuser.pm 2001/08/24 21:09:53 1.18
+++ loncom/interface/loncreateuser.pm 2003/07/25 01:18:04 1.66
@@ -1,74 +1,196 @@
-# The LearningOnline Network
+# The LearningOnline Network with CAPA
# Create a user
#
-# (Create a course
-# (My Desk
+# $Id: loncreateuser.pm,v 1.66 2003/07/25 01:18:04 bowersj2 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
-# April Guy Albertelli
-# 05/10 Gerd Kortemeyer
+# /home/httpd/html/adm/gpl.txt
#
+# http://www.lon-capa.org/
+#
+###
+
package Apache::loncreateuser;
+=pod
+
+=head1 NAME
+
+Apache::loncreateuser - handler to create users and custom roles
+
+=head1 SYNOPSIS
+
+Apache::loncreateuser provides an Apache handler for creating users,
+ editing their login parameters, roles, and removing roles, and
+ also creating and assigning custom roles.
+
+=head1 OVERVIEW
+
+=head2 Custom Roles
+
+In LON-CAPA, roles are actually collections of privileges. "Teaching
+Assistant", "Course Coordinator", and other such roles are really just
+collection of privileges that are useful in many circumstances.
+
+Creating custom roles can be done by the Domain Coordinator through
+the Create User functionality. That screen will show all privileges
+that can be assigned to users. For a complete list of privileges,
+please see C.
+
+Custom role definitions are stored in the CCreate User, Change User Privileges
-
+
$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 (sort 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); +# Is this a custom role? Get role owner and title. + my ($croleudom,$croleuname,$croletitle)= + ($role_code=~/^cr\/(\w+)\/(\w+)\/(\w+)$/); + 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.=' '; + } + my $plaintext=''; + unless ($croletitle) { + $plaintext=&Apache::lonnet::plaintext($role_code); + } else { + $plaintext= + "Customrole '$croletitle' defined by $croleuname\@$croleudom"; + } + $row.= ' | '.$plaintext. + ' | '.$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 | @@ -285,9 +542,9 @@ ENDCOAUTH $r->print('
---|
Activate | Role | Extent | '. 'Start | End |
---|
Activate | Role | Extent | '. - 'Group/Section | Start | End |
---|---|---|---|---|---|
- | $plrole | -$area | -");
- if ($_ ne 'cc') {
- $r->print("");
- } else { $r->print(" "); }
- $r->print(< |
--Set End Date | -