--- loncom/interface/loncreateuser.pm 2007/07/29 04:32:44 1.161
+++ loncom/interface/loncreateuser.pm 2007/10/09 17:33:57 1.188
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.161 2007/07/29 04:32:44 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.188 2007/10/09 17:33:57 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -68,7 +68,6 @@ use Apache::longroup;
use LONCAPA qw(:DEFAULT :match);
my $loginscript; # piece of javascript used in two separate instances
-my $generalrule;
my $authformnop;
my $authformkrb;
my $authformint;
@@ -76,14 +75,24 @@ my $authformfsys;
my $authformloc;
sub initialize_authen_forms {
+ my ($dom,$curr_authtype) = @_;
my ($krbdefdom)=( $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/);
$krbdefdom= uc($krbdefdom);
my %param = ( formname => 'document.cu',
- kerb_def_dom => $krbdefdom
- );
+ kerb_def_dom => $krbdefdom,
+ domain => $dom,
+ );
+ my %abv_auth = &auth_abbrev();
+ if ($curr_authtype =~ /^(krb4|krb5|internal|localauth|unix):$/) {
+ my $long_auth = $1;
+ my %abv_auth = &auth_abbrev();
+ $param{'curr_authtype'} = $abv_auth{$long_auth};
+ if ($long_auth =~ /^krb(4|5)$/) {
+ $param{'curr_kerb_ver'} = $1;
+ }
+ }
# 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);
@@ -92,6 +101,15 @@ sub initialize_authen_forms {
$authformloc = &Apache::loncommon::authform_local(%param);
}
+sub auth_abbrev {
+ my %abv_auth = (
+ krb4 => 'krb',
+ internal => 'int',
+ localuth => 'loc',
+ unix => 'fsys',
+ );
+ return %abv_auth;
+}
# ======================================================= Existing Custom Roles
@@ -175,8 +193,13 @@ END_SCRIPT
}
my $output = $quota_javascript.
'
'.$lt{'disk'}.'
'.
- $lt{'cuqu'}.': '.$currquota.' Mb. '.
- $defaultinfo.'
'.$lt{'chqu'}.
+ &Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_row().
+ ''.$lt{'cuqu'}.': '.$currquota.' Mb. '.
+ $defaultinfo.' | '.
+ &Apache::loncommon::end_data_table_row().
+ &Apache::loncommon::start_data_table_row().
+ ''.$lt{'chqu'}.
': | '.
+ &Apache::loncommon::end_data_table_row().
+ &Apache::loncommon::end_data_table();
return $output;
}
@@ -200,111 +225,13 @@ sub print_username_entry_form {
$formtoset = 'docustom';
$env{'form.rolename'} = $env{'form.startrolename'};
}
- my ($newuserscript,$newuservalidate);
-
- if ($forcenewuser) {
- $newuserscript = <<"ENDSCRIPT";
-
-function setSearch() {
- var createnew = 0;
- for (var i=0; i'."\n".
+ ''."\n";
+ ''."\n";
my %loaditems = (
'onload' => "javascript:setFormElements(document.$formtoset)",
@@ -314,7 +241,7 @@ ENDSCRIPT
$jscript,{'add_entries' => \%loaditems,});
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:backPage(document.crtuser)",
- text=>"User/custom role search",
+ text=>"User modify/custom role edit",
faq=>282,bug=>'Instructor Interface',});
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management');
@@ -330,6 +257,7 @@ ENDSCRIPT
'ecrp' => "Edit Custom Role Privileges",
'nr' => "Name of Role",
'cre' => "Custom Role Editor",
+ 'mod' => "to add/modify roles",
);
my $help = &Apache::loncommon::help_open_menu(undef,undef,282,'Instructor Interface');
my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges');
@@ -342,7 +270,7 @@ ENDSCRIPT
$start_page
$crumbs
$lt{siur}$helpsiur
-$lt{'srch'} $sellink
+$lt{'srch'} $sellink $lt{'mod'}
$response");
$r->print(&entry_form($defdom,$srch,$forcenewuser));
if (&Apache::lonnet::allowed('mcr','/')) {
@@ -361,13 +289,14 @@ ENDCUSTOM
sub entry_form {
my ($dom,$srch,$forcenewuser) = @_;
my $userpicker =
- &Apache::loncommon::user_picker($dom,$srch,$forcenewuser);
+ &Apache::loncommon::user_picker($dom,$srch,$forcenewuser,
+ 'document.crtuser');
my $srchbutton = &mt('Search');
my $output = <<"ENDDOCUMENT";
ENDDOCUMENT
return $output;
@@ -402,7 +331,7 @@ END
# =================================================================== Phase two
sub print_user_selection_page {
- my ($r,$response,$srch,$srch_results) = @_;
+ my ($r,$response,$srch,$srch_results,$context,$srcharray) = @_;
my @fields = ('username','domain','lastname','firstname','permanentemail');
my $sortby = $env{'form.sortby'};
@@ -426,25 +355,34 @@ $jsback
ENDSCRIPT
my %lt=&Apache::lonlocal::texthash(
- 'srch' => "User Search",
+ 'usrch' => "User Search to add/modify roles",
+ 'stusrch' => "User Search to enroll student",
+ 'usel' => "Select a user to add/modify roles",
+ 'stusel' => "Select a user to enroll as a student",
'username' => "username",
'domain' => "domain",
'lastname' => "last name",
'firstname' => "first name",
'permanentemail' => "permanent e-mail",
);
- $r->print(&Apache::loncommon::start_page('Create Users, Change User Privileges',$jscript));
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.usersrchform,'','')",
- text=>"User/custom role search",
- faq=>282,bug=>'Instructor Interface',},
- {href=>"javascript:backPage(document.usersrchform,'get_user_info','select')",
- text=>"Select User",
- faq=>282,bug=>'Instructor Interface',});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
- $r->print("$lt{'srch'}
");
- $r->print(&entry_form($srch->{'srchdomain'},$srch));
- $r->print(''.&mt('Select a user').'
');
+ if ($context eq 'createuser') {
+ $r->print(&Apache::loncommon::start_page('Create Users, Change User Privileges',$jscript));
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"javascript:backPage(document.usersrchform,'','')",
+ text=>"User modify/custom role edit",
+ faq=>282,bug=>'Instructor Interface',},
+ {href=>"javascript:backPage(document.usersrchform,'get_user_info','select')",
+ text=>"Select User",
+ faq=>282,bug=>'Instructor Interface',});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
+ $r->print("$lt{'usrch'}
");
+ $r->print(&entry_form($srch->{'srchdomain'},$srch));
+ $r->print(''.$lt{'usel'}.'
');
+ } else {
+ $r->print($jscript."$lt{'stusrch'}
");
+ $r->print(&Apache::londropadd::single_user_entry_form($srch->{'srchdomain'},$srch));
+ $r->print(''.$lt{'stusel'}.'
');
+ }
$r->print('');
+ ' '."\n".
+ ' '."\n");
$r->print($response);
- $r->print(&Apache::loncommon::end_page());
+ if ($context eq 'createuser') {
+ $r->print(''.&Apache::loncommon::end_page());
+ } else {
+ $r->print(''."\n".
+ ''."\n");
+ }
}
sub print_user_query_page {
- my ($r) = @_;
+ my ($r,$caller) = @_;
# FIXME - this is for a network-wide name search (similar to catalog search)
# To use frames with similar behavior to catalog/portfolio search.
# To be implemented.
@@ -497,10 +445,42 @@ sub print_user_query_page {
sub print_user_modification_page {
my ($r,$ccuname,$ccdomain,$srch,$response) = @_;
- unless (($ccuname) && ($ccdomain)) {
- &print_username_entry_form($r);
+ if (($ccuname eq '') || ($ccdomain eq '')) {
+ my $usermsg = &mt('No username and/or domain provided.');
+ &print_username_entry_form($r,$usermsg);
return;
}
+ my %abv_auth = &auth_abbrev();
+ my ($curr_authtype,$instsrch,$rulematch,$rules,%inst_results,
+ $curr_kerb_ver,$newuser);
+ my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain);
+ if ($uhome eq 'no_host') {
+ $newuser = 1;
+ $instsrch =
+ {
+ srchin => 'instd',
+ srchby => 'uname',
+ srchtype => 'exact',
+ srchterm => $ccuname,
+ srchdomain => $ccdomain,
+ };
+ (my $usercheckmsg,$rulematch,$rules,%inst_results) =
+ &Apache::loncommon::username_rule_check($instsrch,'new');
+ if ($usercheckmsg) {
+ &print_username_entry_form($r,$usercheckmsg);
+ return;
+ }
+ } else {
+ $newuser = 0;
+ my $currentauth =
+ &Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
+ if ($currentauth =~ /^(krb4|krb5|unix|internal|localauth):/) {
+ $curr_authtype = $abv_auth{$1};
+ if ($currentauth =~ /^krb(4|5)/) {
+ $curr_kerb_ver = $1;
+ }
+ }
+ }
if ($response) {
$response = '
'.$response
}
@@ -511,13 +491,14 @@ sub print_user_modification_page {
my %param = ( formname => 'document.cu',
kerb_def_dom => $krbdefdom,
- kerb_def_auth => $krbdef
+ kerb_def_auth => $krbdef,
+ curr_authtype => $curr_authtype,
+ curr_kerb_ver => $curr_kerb_ver,
+ domain => $ccdomain,
);
$loginscript = &Apache::loncommon::authform_header(%param);
$authformkrb = &Apache::loncommon::authform_kerberos(%param);
- $ccuname =&LONCAPA::clean_username($ccuname);
- $ccdomain=&LONCAPA::clean_domain($ccdomain);
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
my $dc_setcourse_code = '';
my $nondc_setsection_code = '';
@@ -721,16 +702,23 @@ ENDSECCODE
$nondc_setsection_code,$groupslist);
my ($jsback,$elements) = &crumb_utilities();
-
+ my $javascript_validations;
+ if ((&Apache::lonnet::allowed('mau',$ccdomain)) || ($uhome eq 'no_host')) {
+ my ($krbdef,$krbdefdom) =
+ &Apache::loncommon::get_kerberos_defaults($ccdomain);
+ $javascript_validations =
+ &Apache::londropadd::javascript_validations('auth',$krbdefdom,undef,
+ undef,$ccdomain);
+ }
$js .= "\n".
- '';
-
+ '';
my $start_page =
&Apache::loncommon::start_page('Create Users, Change User Privileges',
$js,{'add_entries' => \%loaditem,});
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:backPage(document.cu)",
- text=>"User/custom role search",
+ text=>"User modify/custom role edit",
faq=>282,bug=>'Instructor Interface',});
if ($env{'form.phase'} eq 'userpicked') {
@@ -748,13 +736,12 @@ ENDSECCODE
my $forminfo =<<"ENDFORMINFO";