version 1.202, 2019/08/25 02:42:56
|
version 1.211, 2022/11/17 19:07:21
|
Line 532 END
|
Line 532 END
|
END |
END |
} else { |
} else { |
my ($numrules,$intargjs) = |
my ($numrules,$intargjs) = |
&passwd_validation_js('vf.elements[current.argfield].value',$domain); |
&Apache::loncommon::passwd_validation_js('vf.elements[current.argfield].value',$domain); |
$auth_checks .= (<<END); |
$auth_checks .= (<<END); |
foundatype=1; |
foundatype=1; |
if (current.argfield == null || current.argfield == '') { |
if (current.argfield == null || current.argfield == '') { |
Line 543 END
|
Line 543 END
|
case 'krb': |
case 'krb': |
alertmsg = '$alert{'krb'}'; |
alertmsg = '$alert{'krb'}'; |
break; |
break; |
case 'loc': |
|
case 'int': |
case 'int': |
alertmsg = '$alert{'ipass'}'; |
alertmsg = '$alert{'ipass'}'; |
break; |
break; |
case 'fsys': |
case 'fsys': |
alertmsg = '$alert{'ipass'}'; |
alertmsg = '$alert{'ipass'}'; |
break; |
break; |
|
case 'loc': |
|
alertmsg = ''; |
|
break; |
case 'lti': |
case 'lti': |
default: |
default: |
alertmsg = ''; |
alertmsg = ''; |
Line 651 END
|
Line 653 END
|
return $result; |
return $result; |
} |
} |
|
|
sub passwd_validation_js { |
|
my ($currpasswdval,$domain) = @_; |
|
my %passwdconf = &Apache::lonnet::get_passwdconf($domain); |
|
my ($min,$max,@chars,$numrules,$intargjs,%alert); |
|
$numrules = 0; |
|
$min = $Apache::lonnet::passwdmin; |
|
if (ref($passwdconf{'chars'}) eq 'ARRAY') { |
|
if ($passwdconf{'min'} =~ /^\d+$/) { |
|
if ($passwdconf{'min'} > $min) { |
|
$min = $passwdconf{'min'}; |
|
$numrules ++; |
|
} |
|
} else { |
|
$numrules ++; |
|
} |
|
if ($passwdconf{'max'} =~ /^\d+$/) { |
|
$max = $passwdconf{'max'}; |
|
$numrules ++; |
|
} |
|
@chars = @{$passwdconf{'chars'}}; |
|
if (@chars) { |
|
$numrules ++; |
|
} |
|
} else { |
|
$numrules ++; |
|
} |
|
if (($min > 0) || ($max ne '') || (@chars > 0)) { |
|
my $alertmsg = &mt('Initial password did not satisfy requirement(s):').'\n\n'; |
|
if ($min) { |
|
$alert{'min'} = &mt('minimum [quant,_1,character]',$min).'\n'; |
|
} |
|
if ($max) { |
|
$alert{'max'} = &mt('maximum [quant,_1,character]',$max).'\n'; |
|
} |
|
my (@charalerts,@charrules); |
|
if (@chars) { |
|
if (grep(/^uc$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one upper case letter')); |
|
push(@charrules,'uc'); |
|
} |
|
if (grep(/^lc$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one lower case letter')); |
|
push(@charrules,'lc'); |
|
} |
|
if (grep(/^num$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one number')); |
|
push(@charrules,'num'); |
|
} |
|
if (grep(/^spec$/,@chars)) { |
|
push(@charalerts,&mt('contain at least one non-alphanumeric')); |
|
push(@charrules,'spec'); |
|
} |
|
} |
|
$intargjs = qq| var rulesmsg = '';\n|. |
|
qq| var currpwval = $currpasswdval;\n|; |
|
if ($min) { |
|
$intargjs .= qq| |
|
if (currpwval.length < $min) { |
|
rulesmsg += ' - $alert{min}'; |
|
} |
|
|; |
|
} |
|
if ($max) { |
|
$intargjs .= qq| |
|
if (currpwval.length > $max) { |
|
rulesmsg += ' - $alert{max}'; |
|
} |
|
|; |
|
} |
|
if (@chars > 0) { |
|
my $charrulestr = '"'.join('","',@charrules).'"'; |
|
my $charalertstr = '"'.join('","',@charalerts).'"'; |
|
$intargjs .= qq| var brokerules = new Array();\n|. |
|
qq| var charrules = new Array($charrulestr);\n|. |
|
qq| var charalerts = new Array($charalertstr);\n|; |
|
my %rules; |
|
map { $rules{$_} = 1; } @chars; |
|
if ($rules{'uc'}) { |
|
$intargjs .= qq| |
|
var ucRegExp = /[A-Z]/; |
|
if (!ucRegExp.test(currpwval)) { |
|
brokerules.push('uc'); |
|
} |
|
|; |
|
} |
|
if ($rules{'lc'}) { |
|
$intargjs .= qq| |
|
var lcRegExp = /[a-z]/; |
|
if (!lcRegExp.test(currpwval)) { |
|
brokerules.push('lc'); |
|
} |
|
|; |
|
} |
|
if ($rules{'num'}) { |
|
$intargjs .= qq| |
|
var numRegExp = /[0-9]/; |
|
if (!numRegExp.test(currpwval)) { |
|
brokerules.push('num'); |
|
} |
|
|; |
|
} |
|
if ($rules{'spec'}) { |
|
$intargjs .= q| |
|
var specRegExp = /[!"#$%&'()*+,\-.\/:;<=>?@[\\^\]_`{\|}~]/; |
|
if (!specRegExp.test(currpwval)) { |
|
brokerules.push('spec'); |
|
} |
|
|; |
|
} |
|
$intargjs .= qq| |
|
if (brokerules.length > 0) { |
|
for (var i=0; i<brokerules.length; i++) { |
|
for (var j=0; j<charrules.length; j++) { |
|
if (brokerules[i] == charrules[j]) { |
|
rulesmsg += ' - '+charalerts[j]+'\\n'; |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
|; |
|
} |
|
$intargjs .= qq| |
|
if (rulesmsg != '') { |
|
rulesmsg = '$alertmsg'+rulesmsg; |
|
alert(rulesmsg); |
|
return false; |
|
} |
|
|; |
|
} |
|
return ($numrules,$intargjs); |
|
} |
|
|
|
############################################################### |
############################################################### |
############################################################### |
############################################################### |
sub upload_manager_javascript_forward_associate { |
sub upload_manager_javascript_forward_associate { |
Line 1711 sub my_custom_roles {
|
Line 1580 sub my_custom_roles {
|
my %rolehash=&Apache::lonnet::dump('roles',$udom,$uname); |
my %rolehash=&Apache::lonnet::dump('roles',$udom,$uname); |
foreach my $key (keys(%rolehash)) { |
foreach my $key (keys(%rolehash)) { |
if ($key=~/^rolesdef\_(\w+)$/) { |
if ($key=~/^rolesdef\_(\w+)$/) { |
|
my $role = $1; |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
next if ($rolehash{$key} =~ /bre\&S/); |
next if ($rolehash{$key} =~ /bre\&S/); |
} |
} |
$returnhash{$1}=$1; |
$returnhash{$role}=$role; |
} |
} |
} |
} |
return %returnhash; |
return %returnhash; |
Line 3671 END
|
Line 3541 END
|
setSections(formname,'$crstype'); |
setSections(formname,'$crstype'); |
if (seccheck == 'ok') { |
if (seccheck == 'ok') { |
opener.document.$callingform.newsecs.value = formname.sections.value; |
opener.document.$callingform.newsecs.value = formname.sections.value; |
|
} else { |
|
return; |
} |
} |
END |
END |
} else { |
} else { |
Line 5009 sub upfile_drop_add {
|
Line 4881 sub upfile_drop_add {
|
my (%userres,%authres,%roleres,%idres); |
my (%userres,%authres,%roleres,%idres); |
my $singlesec = ''; |
my $singlesec = ''; |
if ($role eq 'st') { |
if ($role eq 'st') { |
|
if (($context eq 'domain') && ($changeauth eq 'Yes') && (!$newuser)) { |
|
if ((&Apache::lonnet::allowed('mau',$userdomain)) && |
|
(&Apache::lonnet::homeserver($username,$userdomain) ne 'no_host')) { |
|
if ((($amode =~ /^krb4|krb5|internal$/) && $password ne '') || |
|
($amode eq 'localauth')) { |
|
$authresult = |
|
&Apache::lonnet::modifyuserauth($userdomain,$username,$amode,$password); |
|
} |
|
} |
|
} |
my $sec; |
my $sec; |
if (ref($userinfo{$i}{'sections'}) eq 'ARRAY') { |
if (ref($userinfo{$i}{'sections'}) eq 'ARRAY') { |
if (@secs > 0) { |
if (@secs > 0) { |
Line 5050 sub upfile_drop_add {
|
Line 4932 sub upfile_drop_add {
|
} |
} |
} |
} |
} |
} |
if (!$multiple) { |
} |
($userresult,$authresult,$roleresult,$idresult) = |
if (!$multiple) { |
&modifyuserrole($context,$setting, |
($userresult,$authresult,$roleresult,$idresult) = |
$changeauth,$cid,$userdomain,$username, |
&modifyuserrole($context,$setting, |
$id,$amode,$password,$fname, |
$changeauth,$cid,$userdomain,$username, |
$mname,$lname,$gen,$singlesec, |
$id,$amode,$password,$fname, |
$env{'form.forceid'},$desiredhost, |
$mname,$lname,$gen,$singlesec, |
$email,$role,$enddate,$startdate, |
$env{'form.forceid'},$desiredhost, |
$checkid,$inststatus); |
$email,$role,$enddate,$startdate, |
} |
$checkid,$inststatus); |
} |
} |
} |
} |
if ($multiple) { |
if ($multiple) { |
Line 5179 sub passwdrule_alerts {
|
Line 5061 sub passwdrule_alerts {
|
my %passwdconf = &Apache::lonnet::get_passwdconf($domain); |
my %passwdconf = &Apache::lonnet::get_passwdconf($domain); |
$warning = '<b>'.&mt('Password requirement(s) unmet for one or more users:').'</b><ul>'; |
$warning = '<b>'.&mt('Password requirement(s) unmet for one or more users:').'</b><ul>'; |
if ($showrules{'min'}) { |
if ($showrules{'min'}) { |
$warning .= '<li>'.&mt('minimum [quant,_1,character]',$passwdconf{'min'}).'</li>'; |
my $min = $passwdconf{'min'}; |
|
if ($min eq '') { |
|
$min = $Apache::lonnet::passwdmin; |
|
} |
|
$warning .= '<li>'.&mt('minimum [quant,_1,character]',$min).'</li>'; |
} |
} |
if ($showrules{'max'}) { |
if ($showrules{'max'}) { |
$warning .= '<li>'.&mt('maximum [quant,_1,character]',$passwdconf{'max'}).'</li>'; |
$warning .= '<li>'.&mt('maximum [quant,_1,character]',$passwdconf{'max'}).'</li>'; |
Line 6308 sub get_permission {
|
Line 6194 sub get_permission {
|
} |
} |
} |
} |
my $allowed = 0; |
my $allowed = 0; |
foreach my $perm (values(%permission)) { |
foreach my $key (keys(%permission)) { |
if ($perm) { $allowed=1; last; } |
next if (($key eq 'owner') || ($key eq 'co-owner')); |
|
if ($permission{$key}) { $allowed=1; last; } |
} |
} |
return (\%permission,$allowed); |
return (\%permission,$allowed); |
} |
} |
Line 6518 sub verify_authen {
|
Line 6405 sub verify_authen {
|
$finish = "document.$formname.submit();"; |
$finish = "document.$formname.submit();"; |
} |
} |
my ($numrules,$intargjs) = |
my ($numrules,$intargjs) = |
&passwd_validation_js('argpicked',$domain); |
&Apache::loncommon::passwd_validation_js('argpicked',$domain); |
my $outcome = <<"ENDSCRIPT"; |
my $outcome = <<"ENDSCRIPT"; |
|
|
function auth_check() { |
function auth_check() { |