# The LearningOnline Network # Create a user # # (Create a course # (My Desk # # (Internal Server Error Handler # # (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) # # 3/1/1 Gerd Kortemeyer) # # 3/1 Gerd Kortemeyer) # # 2/14 Gerd Kortemeyer) # # 2/14,2/17,2/19 Gerd Kortemeyer # package Apache::loncreateuser; use strict; use Apache::Constants qw(:common :http); use Apache::lonnet; # =================================================================== Phase one sub phase_one { my $r=shift; my $defdom=$ENV{'user.domain'}; $r->print(< The LearningOnline Network with CAPA

Create User, Change User Privileges

Username:
Domain:

ENDDOCUMENT } # =================================================================== Phase two sub phase_two { my $r=shift; my $ccuname=$ENV{'form.ccuname'}; my $ccdomain=$ENV{'form.ccdomain'}; $ccuname=~s/\W//g; $ccdomain=~s/\W//g; $r->print(< The LearningOnline Network with CAPA

Create User, Change User Privileges

ENDENHEAD my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain); my %incdomains; my %inccourses; $incdomains{$ENV{'user.domain'}}=1; map { if ($_=~/^user\.priv\.cm\.\/(\w+)\/(\w+)/) { $inccourses{$1.'_'.$2}=1; } } %ENV; if ($uhome eq 'no_host') { $r->print('

New user '.$ccuname.' at '.$ccdomain.'

'); } else { $r->print('

Existing user '.$ccuname.' at '.$ccdomain.'

'); my $rolesdump=&Apache::lonnet::reply( "dump:$ccdomain:$ccuname:roles",$uhome); unless ($rolesdump eq 'con_lost') { my $now=time; $r->print('

Revoke Existing Roles

'. ''. ''); map { if ($_!~/^rolesdef\&/) { my ($area,$role)=split(/=/,$_); my $thisrole=$area; $area=~s/\_\w\w$//; my ($trole,$tend,$tstart)=split(/_/,$role); my $allows=0; if ($area=~/^\/(\w+)\/(\d\w+)\/(\w+)/) { my %coursedata=&Apache::lonnet::coursedescription($1.'_'.$2); $area='Course: '. $coursedata{'description'}.'
Section/Group: '.$3; $inccourses{$1.'_'.$2}=1; if (&Apache::lonnet::allowed('c'.$trole,$1.'_'.$2)) { $allows=1; } } else { if ($1) { $incdomains{$1}=1; if (&Apache::lonnet::allowed('c'.$trole,$1)) { $allows=1; } } } my $active=1; if (($tend) && ($now>$tend)) { $active=0; } $r->print('\n"); } } split(/&/,$rolesdump); $r->print('
RevokeRoleExtentStartEnd
'); 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):' ')."
'); } } $r->print('

Add Roles

System Level
'); $r->print('
Domain Level
'); map { my $thisdomain=$_; map { if (&Apache::lonnet::allowed('c'.$_,$thisdomain)) { $r->print($_.' - '.$thisdomain.'
'); } } ('dc','cc','li','dg','au'); } sort keys %incdomains; $r->print('
Course Level
'); map { my $thiscourse=$_; map { if (&Apache::lonnet::allowed('c'.$_,$thiscourse)) { $r->print($_.' - '.$thiscourse.'
'); } } ('st','ta','ep','ad','in'); } sort keys %inccourses; $r->print('
'); } # ================================================================ Main Handler sub handler { my $r = shift; if ($r->header_only) { $r->content_type('text/html'); $r->send_http_header; return OK; } if ((&Apache::lonnet::allowed('cta',$ENV{'request.course.id'})) || (&Apache::lonnet::allowed('cin',$ENV{'request.course.id'})) || (&Apache::lonnet::allowed('ccr',$ENV{'request.course.id'})) || (&Apache::lonnet::allowed('cep',$ENV{'request.course.id'})) || (&Apache::lonnet::allowed('mau',$ENV{'user.domain'}))) { $r->content_type('text/html'); $r->send_http_header; unless ($ENV{'form.phase'}) { &phase_one($r); } if ($ENV{'form.phase'} eq 'two') { &phase_two($r); } } else { $ENV{'user.error.msg'}= "/adm/createcourse:mau:0:0:Cannot modify user data"; return HTTP_NOT_ACCEPTABLE; } return OK; } 1; __END__