--- loncom/interface/loncreateuser.pm 2002/08/22 21:05:25 1.41 +++ loncom/interface/loncreateuser.pm 2002/11/25 18:44:33 1.45 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.41 2002/08/22 21:05:25 albertel Exp $ +# $Id: loncreateuser.pm,v 1.45 2002/11/25 18:44:33 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -47,7 +47,7 @@ # 11/12,11/13,11/15 Scott Harrison # 02/11/02 Matthew Hall # -# $Id: loncreateuser.pm,v 1.41 2002/08/22 21:05:25 albertel Exp $ +# $Id: loncreateuser.pm,v 1.45 2002/11/25 18:44:33 matthew Exp $ ### package Apache::loncreateuser; @@ -80,11 +80,24 @@ BEGIN { $authformloc = &Apache::loncommon::authform_local(%param); } + + +# ==================================================== 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'}; + my $defdom=$ENV{'request.role.domain'}; my @domains = &Apache::loncommon::get_domains(); my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain'); my $bodytag =&Apache::loncommon::bodytag( @@ -95,13 +108,16 @@ sub phase_one { The LearningOnline Network with CAPA $bodytag -
- + +

-Username:
-Domain: $domform + + +
Username: +
+Domain:$domform

- +
@@ -109,7 +125,7 @@ ENDDOCUMENT } # =================================================================== Phase two -sub phase_two { +sub print_user_modification_page { my $r=shift; my $ccuname=$ENV{'form.ccuname'}; my $ccdomain=$ENV{'form.ccdomain'}; @@ -122,7 +138,7 @@ sub phase_two { ); $loginscript = &Apache::loncommon::authform_header(%param); - my $defdom=$ENV{'user.domain'}; + my $defdom=$ENV{'request.role.domain'}; $ccuname=~s/\W//g; $ccdomain=~s/\W//g; @@ -160,7 +176,7 @@ ENDDOCHEAD 'Create Users, Change User Privileges')); my $forminfo =<<"ENDFORMINFO";
- + @@ -294,18 +310,12 @@ END } } } - # I have no idea what the hell the above code does - # So the following is a check: - if ($allowed) { - # If we are looking at a co-author role, make sure it is - # for the current users construction space before we let - # them revoke it. - if (($role_code eq 'ca') && - ($ENV{'request.role'} !~ /^dc/)) { - if ($area !~ - /^\/$ENV{'user.domain'}\/$ENV{'user.name'}/) { - $allowed = 0; - } + if ($role_code eq 'ca') { + $area=~/\/(\w+)\/(\w+)/; + if (&authorpriv($2,$1)) { + $allowed=1; + } else { + $allowed=0; } } my $row = ''; @@ -331,7 +341,7 @@ END my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain); if ($currentauth=~/^krb(4|5):/) { $currentauth=~/^krb(4|5):(.*)/; - my $krbdefdom2=$1; + my $krbdefdom=$1; my %param = ( formname => 'document.cu', kerb_def_dom => $krbdefdom ); @@ -343,7 +353,7 @@ END $currentauth=~/^internal:/ or $currentauth=~/^localauth:/ ) { # bad authentication scheme - if (&Apache::lonnet::allowed('mau',$ENV{'user.domain'})) { + if (&Apache::lonnet::allowed('mau',$ENV{'request.role.domain'})) { $r->print(<