[LON-CAPA-cvs] cvs: loncom /interface loncreateuser.pm lonuserutils.pm
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Tue, 01 Jan 2008 17:25:00 -0000
This is a MIME encoded message
--raeburn1199208300
Content-Type: text/plain
raeburn Tue Jan 1 12:25:00 2008 EDT
Modified files:
/loncom/interface loncreateuser.pm lonuserutils.pm
Log:
- aggregate setting of $authform_* variables in loncreateuser with &initialize_authen_form()
- remove duplicate code for setting $authform_*
- replace use of &lonuserutils::javascript_validations() for javascript validation of authentication input on modify single user/enroll ingle student screens with &lonuserutils::verify_authen()
--raeburn1199208300
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20080101122500.txt"
Index: loncom/interface/loncreateuser.pm
diff -u loncom/interface/loncreateuser.pm:1.226 loncom/interface/loncreateuser.pm:1.227
--- loncom/interface/loncreateuser.pm:1.226 Sun Dec 30 21:28:12 2007
+++ loncom/interface/loncreateuser.pm Tue Jan 1 12:24:59 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.226 2007/12/31 02:28:12 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.227 2008/01/01 17:24:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -76,30 +76,30 @@
my $authformloc;
sub initialize_authen_forms {
- my ($dom,$curr_authtype,$mode) = @_;
- my ($krbdefdom)=( $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/);
- $krbdefdom= uc($krbdefdom);
- my %param = ( formname => 'document.cu',
+ my ($dom,$formname,$curr_authtype,$mode) = @_;
+ my ($krbdef,$krbdefdom) = &Apache::loncommon::get_kerberos_defaults($dom);
+ my %param = ( formname => $formname,
kerb_def_dom => $krbdefdom,
+ kerb_def_auth => $krbdef,
domain => $dom,
);
my %abv_auth = &auth_abbrev();
- if ($curr_authtype =~ /^(krb4|krb5|internal|localauth|unix):$/) {
+ if ($curr_authtype =~ /^(krb4|krb5|internal|localauth|unix):(.*)$/) {
my $long_auth = $1;
+ my $curr_autharg = $2;
my %abv_auth = &auth_abbrev();
$param{'curr_authtype'} = $abv_auth{$long_auth};
if ($long_auth =~ /^krb(4|5)$/) {
$param{'curr_kerb_ver'} = $1;
+ $param{'curr_autharg'} = $curr_autharg;
}
if ($mode eq 'modifyuser') {
$param{'mode'} = $mode;
}
}
-# no longer static due to configurable kerberos defaults
-# $loginscript = &Apache::loncommon::authform_header(%param);
+ $loginscript = &Apache::loncommon::authform_header(%param);
+ $authformkrb = &Apache::loncommon::authform_kerberos(%param);
$authformnop = &Apache::loncommon::authform_nochange(%param);
-# no longer static due to configurable kerberos defaults
-# $authformkrb = &Apache::loncommon::authform_kerberos(%param);
$authformint = &Apache::loncommon::authform_internal(%param);
$authformfsys = &Apache::loncommon::authform_filesystem(%param);
$authformloc = &Apache::loncommon::authform_local(%param);
@@ -515,8 +515,7 @@
$formname = 'cu';
}
my %abv_auth = &auth_abbrev();
- my ($curr_authtype,%rulematch,%inst_results,$curr_kerb_ver,$newuser,
- %alerts,%curr_rules,%got_rules);
+ my (%rulematch,%inst_results,$newuser,%alerts,%curr_rules,%got_rules);
my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain);
if ($uhome eq 'no_host') {
my $usertype;
@@ -571,32 +570,10 @@
}
} 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 = '<br />'.$response;
}
- my $defdom=$env{'request.role.domain'};
-
- my ($krbdef,$krbdefdom) =
- &Apache::loncommon::get_kerberos_defaults($defdom);
-
- my %param = ( formname => 'document.cu',
- kerb_def_dom => $krbdefdom,
- 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);
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
my $dc_setcourse_code = '';
@@ -654,7 +631,7 @@
# Current user has quota modification privileges
$portfolioform = '<br />'.&portfolio_quota($ccuname,$ccdomain);
}
- &initialize_authen_forms($ccdomain);
+ &initialize_authen_forms($ccdomain,$formname);
my %lt=&Apache::lonlocal::texthash(
'cnu' => 'Create New User',
'ast' => 'as a student',
@@ -775,8 +752,7 @@
$r->print(&Apache::lonuserutils::forceid_change($context));
}
$r->print('</div>');
- my $user_auth_text =
- &user_authentication($ccuname,$ccdomain,$krbdefdom,\%abv_auth);
+ my $user_auth_text = &user_authentication($ccuname,$ccdomain,$formname);
my $user_quota_text;
if (&Apache::lonnet::allowed('mpq',$ccdomain)) {
# Current user has quota modification privileges
@@ -840,7 +816,7 @@
if ($addrolesdisplay) {
$r->print('<br /><input type="button" value="'.&mt('Modify User').'"');
if ($newuser) {
- $r->print(' onClick="verify_message(this.form)" \>'."\n");
+ $r->print(' onClick="auth_check()" \>'."\n");
} else {
$r->print('onClick="this.form.submit()" \>'."\n");
}
@@ -897,26 +873,28 @@
if ($context eq 'domain') {
my $dcdom = $env{'request.role.domain'};
$loaditem->{'onload'} = "document.cu.coursedesc.value='';";
- $dc_setcourse_code = &Apache::lonuserutils::dc_setcourse_js('cu','singleuser');
+ $dc_setcourse_code =
+ &Apache::lonuserutils::dc_setcourse_js('cu','singleuser',$context);
} else {
- $nondc_setsection_code =
- &Apache::lonuserutils::setsections_javascript($formname,$groupslist);
+ my $checkauth;
+ if (($newuser) || (&Apache::lonnet::allowed('mau',$ccdomain))) {
+ $checkauth = 1;
+ }
+ if ($context eq 'course') {
+ $nondc_setsection_code =
+ &Apache::lonuserutils::setsections_javascript($formname,$groupslist,
+ undef,$checkauth);
+ }
+ if ($checkauth) {
+ $nondc_setsection_code .=
+ &Apache::lonuserutils::verify_authen($formname,$context);
+ }
}
my $js = &user_modification_js($pjump_def,$dc_setcourse_code,
$nondc_setsection_code,$groupslist);
-
my ($jsback,$elements) = &crumb_utilities();
- my $javascript_validations;
- if ((&Apache::lonnet::allowed('mau',$ccdomain)) || ($newuser)) {
- my ($krbdef,$krbdefdom) =
- &Apache::loncommon::get_kerberos_defaults($ccdomain);
- $javascript_validations =
- &Apache::lonuserutils::javascript_validations('createuser',$krbdefdom,undef,
- undef,$ccdomain);
- }
$js .= "\n".
- '<script type="text/javascript">'."\n".$jsback."\n".
- $javascript_validations.'</script>';
+ '<script type="text/javascript">'."\n".$jsback."\n".'</script>';
return $js;
}
@@ -1241,22 +1219,9 @@
}
sub user_authentication {
- my ($ccuname,$ccdomain,$krbdefdom,$abv_auth) = @_;
+ my ($ccuname,$ccdomain,$formname) = @_;
my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
- my ($loginscript,$outcome);
- if ($currentauth=~/^(krb)(4|5):(.*)/) {
- my $long_auth = $1.$2;
- my $curr_kerb_ver = $2;
- my $krbdefdom=$3;
- my $curr_authtype = $abv_auth->{$long_auth};
- my %param = ( formname => 'document.cu',
- kerb_def_dom => $krbdefdom,
- domain => $ccdomain,
- curr_authtype => $curr_authtype,
- curr_kerb_ver => $curr_kerb_ver,
- );
- $loginscript = &Apache::loncommon::authform_header(%param);
- }
+ my $outcome;
# Check for a bad authentication type
if ($currentauth !~ /^(krb4|krb5|unix|internal|localauth):/) {
# bad authentication scheme
@@ -1268,7 +1233,8 @@
'ld' => "Login Data"
);
if (&Apache::lonnet::allowed('mau',$ccdomain)) {
- &initialize_authen_forms($ccdomain);
+ &initialize_authen_forms($ccdomain,$formname);
+
my $choices = &Apache::lonuserutils::set_login($ccdomain,$authformkrb,$authformint,$authformloc);
$outcome = <<ENDBADAUTH;
<script type="text/javascript" language="Javascript">
@@ -1289,7 +1255,7 @@
ENDBADAUTH
}
} else { # Authentication type is valid
- &initialize_authen_forms($ccdomain,$currentauth,'modifyuser');
+ &initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');
my ($authformcurrent,$can_modify,@authform_others) =
&modify_login_block($ccdomain,$currentauth);
if (&Apache::lonnet::allowed('mau',$ccdomain)) {
Index: loncom/interface/lonuserutils.pm
diff -u loncom/interface/lonuserutils.pm:1.36 loncom/interface/lonuserutils.pm:1.37
--- loncom/interface/lonuserutils.pm:1.36 Wed Dec 26 09:38:13 2007
+++ loncom/interface/lonuserutils.pm Tue Jan 1 12:24:59 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility functions for managing LON-CAPA user accounts
#
-# $Id: lonuserutils.pm,v 1.36 2007/12/26 14:38:13 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.37 2008/01/01 17:24:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -76,7 +76,7 @@
}
}
if ($result eq '') {
- $result = 'Unable to find section for this student';
+ $result = &mt('Unable to find section for this student');
} else {
$result =~ s/(ok:)+/ok/g;
}
@@ -333,17 +333,12 @@
sub javascript_validations {
my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain,
$context,$groupslist)=@_;
-
my %param = (
kerb_def_dom => $krbdefdom,
curr_authtype => $curr_authtype,
);
- if ($mode eq 'createuser') {
- $param{'formname'} = 'cu';
- } elsif ($mode eq 'upload') {
+ if ($mode eq 'upload') {
$param{'formname'} = 'studentform';
- } elsif ($mode eq 'singlestudent') {
- $param{'formname'} = 'cu';
} elsif ($mode eq 'createcourse') {
$param{'formname'} = 'ccrs';
} elsif ($mode eq 'modifycourse') {
@@ -367,7 +362,7 @@
}
} elsif ($context eq 'domain') {
$setsection_call = 'setCourse()';
- $setsections_js = &dc_setcourse_js($param{'formname'},$mode);
+ $setsections_js = &dc_setcourse_js($param{'formname'},$mode,$context);
}
$finish = " var checkSec = $setsection_call\n".
" if (checkSec == 'ok') {\n".
@@ -389,8 +384,7 @@
role => 'The optional role field was not specified.',
continue => 'Continue adding users?',
);
-
- my $function_name =(<<END);
+ my $function_name = <<"END";
$setsections_js
function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) {
@@ -521,14 +515,8 @@
}
END
}
- my $result = $function_name;
- if ( ($mode eq 'upload') || ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) {
- $result .= $auth_checks;
- }
- $result .= $optional_checks."\n".$section_checks;
- if ( ($mode eq 'upload') || ($mode eq 'createcourse') || ($mode eq 'modifycourse') ) {
- $result .= $authheader;
- }
+ my $result = $function_name.$auth_checks.$optional_checks."\n".
+ $section_checks.$authheader;
return $result;
}
###############################################################
@@ -4168,7 +4156,7 @@
}
sub setsections_javascript {
- my ($formname,$groupslist,$mode) = @_;
+ my ($formname,$groupslist,$mode,$checkauth) = @_;
my ($checkincluded,$finish,$rolecode,$setsection_js);
if ($mode eq 'upload') {
$checkincluded = 'formname.name == "'.$formname.'"';
@@ -4176,12 +4164,26 @@
$rolecode = "var role = formname.defaultrole.options[formname.defaultrole.selectedIndex].value;\n";
} elsif ($formname eq 'cu') {
$checkincluded = 'formname.elements[i-1].checked == true';
- $finish = 'formname.submit()';
+ if ($checkauth) {
+ $finish = "var authcheck = auth_check();\n".
+ " if (authcheck == 'ok') {\n".
+ " formname.submit();\n".
+ " }\n";
+ } else {
+ $finish = 'formname.submit()';
+ }
$rolecode = "var match = str.split('_');
var role = match[3];\n";
} elsif ($formname eq 'enrollstudent') {
$checkincluded = 'formname.name == "'.$formname.'"';
- $finish = 'formname.submit()';
+ if ($checkauth) {
+ $finish = "var authcheck = auth_check();\n".
+ " if (authcheck == 'ok') {\n".
+ " formname.submit();\n".
+ " }\n";
+ } else {
+ $finish = 'formname.submit()';
+ }
$rolecode = "var match = str.split('_');
var role = match[1];\n";
} else {
@@ -4518,15 +4520,19 @@
}
sub dc_setcourse_js {
- my ($formname,$mode) = @_;
- my $dc_setcourse_code;
+ my ($formname,$mode,$context) = @_;
+ my ($dc_setcourse_code,$authen_check);
my $cctext = &Apache::lonnet::plaintext('cc');
my %alerts = §ioncheck_alerts();
my $role = 'role';
if ($mode eq 'upload') {
$role = 'courserole';
+ } else {
+ $authen_check = &verify_authen($formname,$context);
}
$dc_setcourse_code = (<<"SCRIPTTOP");
+$authen_check
+
function setCourse() {
var course = document.$formname.dccourse.value;
if (course != "") {
@@ -4611,9 +4617,11 @@
}
}
}
- document.$formname.submit();
+ var authcheck = auth_check();
+ if (authcheck == 'ok') {
+ document.$formname.submit();
+ }
}
-
ENDSCRIPT
} else {
$dc_setcourse_code .= "
@@ -4634,6 +4642,66 @@
return -1;
}
ENDSCRIPT
+ return $dc_setcourse_code;
+}
+
+sub verify_authen {
+ my ($formname,$context) = @_;
+ my %alerts = &authcheck_alerts();
+ my $finish = "return 'ok';";
+ if ($context eq 'author') {
+ $finish = "document.$formname.submit();";
+ }
+ my $outcome = <<"ENDSCRIPT";
+
+function auth_check() {
+ var logintype;
+ if (document.$formname.login.length) {
+ if (document.$formname.login.length > 0) {
+ var loginpicked = 0;
+ for (var i=0; i<document.$formname.login.length; i++) {
+ if (document.$formname.login[i].checked == true) {
+ loginpicked = 1;
+ logintype = document.$formname.login[i].value;
+ }
+ }
+ if (loginpicked == 0) {
+ alert("$alerts{'authen'}");
+ return;
+ }
+ }
+ } else {
+ logintype = document.$formname.login.value;
+ }
+ if (logintype == 'nochange') {
+ return 'ok';
+ }
+ var argpicked = document.$formname.elements[logintype+'arg'].value;
+ if ((argpicked == null) || (argpicked == '') || (typeof argpicked == 'undefined')) {
+ var alertmsg = '';
+ switch (logintype) {
+ case 'krb':
+ alertmsg = '$alerts{'krb'}';
+ break;
+ case 'int':
+ alertmsg = '$alerts{'ipass'}';
+ case 'fsys':
+ alertmsg = '$alerts{'ipass'}';
+ break;
+ case 'loc':
+ alertmsg = '';
+ break;
+ default:
+ alertmsg = '';
+ }
+ if (alertmsg != '') {
+ alert(alertmsg);
+ return;
+ }
+ }
+ $finish
+}
+ENDSCRIPT
}
sub sectioncheck_alerts {
@@ -4655,5 +4723,15 @@
return %alerts;
}
+sub authcheck_alerts {
+ my %alerts =
+ &Apache::lonlocal::texthash(
+ authen => 'You must choose an authentication type.',
+ krb => 'You need to specify the Kerberos domain.',
+ ipass => 'You need to specify the initial password.',
+ );
+ return %alerts;
+}
+
1;
--raeburn1199208300--