+ENDNEWUSER
} else { # user already exists
- $r->print(<print(<Change User Privileges
$forminfo
User "$ccuname" in domain $ccdomain
-ENDCHUSER
- my $rolesdump=&Apache::lonnet::reply(
- "dump:$ccdomain:$ccuname:roles",$uhome);
+ENDCHANGEUSER
+ # Get the users information
+ my %userenv = &Apache::lonnet::get('environment',
+ ['firstname','middlename','lastname','generation'],
+ $ccdomain,$ccuname);
+ my %rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname);
+ $r->print(<
+
+END
# Build up table of user roles to allow revocation of a role.
- unless ($rolesdump eq 'con_lost') {
+ my ($tmp) = keys(%rolesdump);
+ unless ($tmp =~ /^(con_lost|error)/i) {
my $now=time;
- $r->print('
Revoke Existing Roles
'.
+ $r->print('
Revoke Existing Roles
'.
'
Revoke
Role
Extent
'.
- '
Start
End
');
- foreach (split(/&/,$rolesdump)) {
- if ($_!~/^rolesdef\&/) {
- my ($area,$role)=split(/=/,$_);
- my $thisrole=$area;
- $area=~s/\_\w\w$//;
- 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'.$role_code,$1.'/'.$2)) {
- $allows=1;
- }
- # What follows is an odd computation. It seems the value
- # of the $area variable above is used to compute the
- # background color. This makes sense, but I can't make
- # heads or tail of the computation at this point..
- $bgcol=$1.'_'.$2;
- $bgcol=~s/[^8-9b-e]//g;
- $bgcol=substr($bgcol.$bgcol.$bgcol.'ffffff',0,6);
- if ($area=~/^\/(\w+)\/(\d\w+)\/(\w+)/) {
- $carea.=' Section/Group: '.$3;
- }
- $area=$carea;
- } else {
- if ($area=~/^\/(\w+)\//) {
- if (&Apache::lonnet::allowed('c'.$role_code,$1)) {
- $allows=1;
- }
+ '
Start
End
');
+ foreach my $area (keys(%rolesdump)) {
+ 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 $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'.$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);
+ if ($area=~/^\/(\w+)\/(\d\w+)\/(\w+)/) {
+ $carea.=' Section/Group: '.$3;
+ }
+ $area=$carea;
} else {
- if (&Apache::lonnet::allowed('c'.$role_code,'/')) {
- $allows=1;
+ # Determine if current user is able to revoke privileges
+ if ($area=~/^\/(\w+)\//) {
+ if (&Apache::lonnet::allowed('c'.$role_code,$1)) {
+ $allows=1;
+ }
+ } else {
+ if (&Apache::lonnet::allowed('c'.$role_code,'/')) {
+ $allows=1;
+ }
}
}
- }
-
- my $active=1;
- if (($role_end_time) && ($now>$role_end_time)) { $active=0; }
- $r->print('
\n");
- }
- }
+ } # end of foreach (table building loop)
$r->print('
');
- }
+ } # End of unless
my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
if ($currentauth=~/^krb4:/) {
$currentauth=~/^krb4:(.*)/;
my $krbdefdom2=$1;
- $loginscript=~s/vf\.krbdom\.value='.*?';/vf.krbdom.value='$krbdefdom2';/;
+ my %param = ( formname => 'document.cu',
+ kerb_def_dom => $krbdefdom
+ );
+ $loginscript = &Apache::loncommon::authform_header(%param);
}
- # Here is where we'll have to check against the permissions of the
- # user attempting to modify this users data. Only users with
- # MAU (Modify Authentication User) permissions should be able to
- # make these changes. I think a subroutine would be in order here.
+ # Check for a bad authentication type
unless ($currentauth=~/^krb4:/ or
$currentauth=~/^unix:/ or
$currentauth=~/^internal:/ or
$currentauth=~/^localauth:/
- ) {
- $r->print(<print(<
+
ERROR:
This user has an unrecognized authentication scheme ($currentauth).
Please specify login data below.
+ENDBADAUTH
+ } else {
+ # This user is not allowed to modify the users
+ # authentication scheme, so just notify them of the problem
+ $r->print(<
+
+ 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;
- # 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
+ $authform_other="
";
}
elsif ($currentauth=~/^localauth:/) {
$authformcurrent=$authformloc;
- $authformother=$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
+ $authform_other="
$authformkrb
".
+ "
$authformint
$authformfsys
";
}
- $authformcurrent=<
* * * WARNING * * *
@@ -459,18 +389,23 @@ END
$authformcurrent
Changing this value will overwrite existing authentication for the user; you should notify the user of this change.
-END
- $r->print(<print(<
+
Change Current Login Data
-$generalrule
-$authformnop
-$authformcurrent
+
$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('