version 1.293, 2017/02/25 20:30:52
|
version 1.294, 2017/03/13 18:30:07
|
Line 265 sub handler {
|
Line 265 sub handler {
|
help => 'Domain_Configuration_LangTZAuth', |
help => 'Domain_Configuration_LangTZAuth', |
header => [{col1 => 'Setting', |
header => [{col1 => 'Setting', |
col2 => 'Value'}, |
col2 => 'Value'}, |
|
{col1 => 'Internal Authentication', |
|
col2 => 'Value'}, |
{col1 => 'Institutional user types', |
{col1 => 'Institutional user types', |
col2 => 'Assignable to e-mail usernames'}], |
col2 => 'Assignable to e-mail usernames'}], |
print => \&print_defaults, |
print => \&print_defaults, |
Line 808 sub print_config_box {
|
Line 810 sub print_config_box {
|
if (($action eq 'autoupdate') || ($action eq 'usercreation') || |
if (($action eq 'autoupdate') || ($action eq 'usercreation') || |
($action eq 'selfcreation') || ($action eq 'selfenrollment') || |
($action eq 'selfcreation') || ($action eq 'selfenrollment') || |
($action eq 'usersessions') || ($action eq 'coursecategories') || |
($action eq 'usersessions') || ($action eq 'coursecategories') || |
($action eq 'trust') || ($action eq 'contacts')) { |
($action eq 'trust') || ($action eq 'contacts') || ($action eq 'defaults')) { |
if ($action eq 'coursecategories') { |
if ($action eq 'coursecategories') { |
$output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal); |
$output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal); |
$colspan = ' colspan="2"'; |
$colspan = ' colspan="2"'; |
Line 6131 sub print_usermodification {
|
Line 6133 sub print_usermodification {
|
sub print_defaults { |
sub print_defaults { |
my ($position,$dom,$settings,$rowtotal) = @_; |
my ($position,$dom,$settings,$rowtotal) = @_; |
my $rownum = 0; |
my $rownum = 0; |
my ($datatable,$css_class); |
my ($datatable,$css_class,$titles); |
|
unless ($position eq 'bottom') { |
|
$titles = &defaults_titles($dom); |
|
} |
if ($position eq 'top') { |
if ($position eq 'top') { |
my @items = ('auth_def','auth_arg_def','lang_def','timezone_def', |
my @items = ('auth_def','auth_arg_def','lang_def','timezone_def', |
'datelocale_def','portal_def'); |
'datelocale_def','portal_def'); |
Line 6144 sub print_defaults {
|
Line 6149 sub print_defaults {
|
$defaults{$item} = $domdefaults{$item}; |
$defaults{$item} = $domdefaults{$item}; |
} |
} |
} |
} |
my $titles = &defaults_titles($dom); |
|
foreach my $item (@items) { |
foreach my $item (@items) { |
if ($rownum%2) { |
if ($rownum%2) { |
$css_class = ''; |
$css_class = ''; |
Line 6192 sub print_defaults {
|
Line 6196 sub print_defaults {
|
$datatable .= '</td></tr>'; |
$datatable .= '</td></tr>'; |
$rownum ++; |
$rownum ++; |
} |
} |
|
} elsif ($position eq 'middle') { |
|
my @items = ('intauth_cost','intauth_check','intauth_switch'); |
|
my %defaults; |
|
if (ref($settings) eq 'HASH') { |
|
%defaults = %{$settings}; |
|
if ($defaults{'intauth_cost'} !~ /^\d+$/) { |
|
$defaults{'intauth_cost'} = 10; |
|
} |
|
if ($defaults{'intauth_check'} !~ /^(0|1|2)$/) { |
|
$defaults{'intauth_check'} = 0; |
|
} |
|
if ($defaults{'intauth_switch'} !~ /^(0|1|2)$/) { |
|
$defaults{'intauth_switch'} = 0; |
|
} |
|
} else { |
|
%defaults = ( |
|
'intauth_cost' => 10, |
|
'intauth_check' => 0, |
|
'intauth_switch' => 0, |
|
); |
|
} |
|
foreach my $item (@items) { |
|
if ($rownum%2) { |
|
$css_class = ''; |
|
} else { |
|
$css_class = ' class="LC_odd_row" '; |
|
} |
|
$datatable .= '<tr'.$css_class.'>'. |
|
'<td><span class="LC_nobreak">'.$titles->{$item}. |
|
'</span></td><td class="LC_left_item" colspan="3">'; |
|
if ($item eq 'intauth_switch') { |
|
my @options = (0,1,2); |
|
my %optiondesc = &Apache::lonlocal::texthash ( |
|
0 => 'No', |
|
1 => 'Yes', |
|
2 => 'Yes, and copy existing passwd file to passwd.bak file', |
|
); |
|
$datatable .= '<table width="100%">'; |
|
foreach my $option (@options) { |
|
my $checked = ' '; |
|
if ($defaults{$item} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
|
$datatable .= '<tr><td class="LC_left_item"><span class="LC_nobreak">'. |
|
'<label><input type="radio" name="'.$item. |
|
'" value="'.$option.'"'.$checked.' />'. |
|
$optiondesc{$option}.'</label></span></td></tr>'; |
|
} |
|
$datatable .= '</table>'; |
|
} elsif ($item eq 'intauth_check') { |
|
my @options = (0,1,2); |
|
my %optiondesc = &Apache::lonlocal::texthash ( |
|
0 => 'No', |
|
1 => 'Yes, allow login then update passwd file using default cost (if higher)', |
|
2 => 'Yes, disallow login if stored cost is less than domain default', |
|
); |
|
$datatable .= '<table wisth="100%">'; |
|
foreach my $option (@options) { |
|
my $checked = ' '; |
|
my $onclick; |
|
if ($defaults{$item} eq $option) { |
|
$checked = ' checked="checked"'; |
|
} |
|
if ($option == 2) { |
|
$onclick = ' onclick="javascript:warnIntAuth(this);"'; |
|
} |
|
$datatable .= '<tr><td class="LC_left_item"><span class="LC_nobreak">'. |
|
'<label><input type="radio" name="'.$item. |
|
'" value="'.$option.'"'.$checked.$onclick.' />'. |
|
$optiondesc{$option}.'</label></span></td></tr>'; |
|
} |
|
$datatable .= '</table>'; |
|
} else { |
|
$datatable .= '<input type="text" name="'.$item.'" value="'. |
|
$defaults{$item}.'" size="3" onblur="javascript:warnIntAuth(this);" />'; |
|
} |
|
$datatable .= '</td></tr>'; |
|
$rownum ++; |
|
} |
} else { |
} else { |
my (%defaults); |
my %defaults; |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH') && |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH') && |
(ref($settings->{'inststatusguest'}) eq 'ARRAY')) { |
(ref($settings->{'inststatusguest'}) eq 'ARRAY')) { |
Line 6288 sub defaults_titles {
|
Line 6371 sub defaults_titles {
|
'timezone_def' => 'Default timezone', |
'timezone_def' => 'Default timezone', |
'datelocale_def' => 'Default locale for dates', |
'datelocale_def' => 'Default locale for dates', |
'portal_def' => 'Portal/Default URL', |
'portal_def' => 'Portal/Default URL', |
|
'intauth_cost' => 'Encryption cost for bcrypt (positive integer)', |
|
'intauth_check' => 'Check bcrypt cost if authenticated', |
|
'intauth_switch' => 'Existing crypt-based switched to bcrypt on authentication', |
); |
); |
if ($dom) { |
if ($dom) { |
my $uprimary_id = &Apache::lonnet::domain($dom,'primary'); |
my $uprimary_id = &Apache::lonnet::domain($dom,'primary'); |
Line 6823 sub serverstatus_pages {
|
Line 6909 sub serverstatus_pages {
|
|
|
sub defaults_javascript { |
sub defaults_javascript { |
my ($settings) = @_; |
my ($settings) = @_; |
return unless (ref($settings) eq 'HASH'); |
my $intauthcheck = &mt('Warning: disallowing login for an authenticated user if the stored cost is less than the default will require a password reset by/for the user.'); |
|
my $intauthcost = &mt('Warning: bcrypt encryption cost for internal authentication must be an integer.'); |
|
&js_escape(\$intauthcheck); |
|
&js_escape(\$intauthcost); |
|
my $intauthjs = <<"ENDSCRIPT"; |
|
|
|
function warnIntAuth(field) { |
|
if (field.name == 'intauth_check') { |
|
if (field.value == '2') { |
|
alert('$intauthcheck'); |
|
} |
|
} |
|
if (field.name == 'intauth_cost') { |
|
field.value.replace(/\s/g,''); |
|
if (field.value != '') { |
|
var regexdigit=/^\\d+\$/; |
|
if (!regexdigit.test(field.value)) { |
|
alert('$intauthcost'); |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
ENDSCRIPT |
|
|
|
if (ref($settings) ne 'HASH') { |
|
return &Apache::lonhtmlcommon::scripttag($intauthjs); |
|
} |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) { |
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) { |
my $maxnum = scalar(@{$settings->{'inststatusorder'}}); |
my $maxnum = scalar(@{$settings->{'inststatusorder'}}); |
if ($maxnum eq '') { |
if ($maxnum eq '') { |
Line 6877 $jstext
|
Line 6991 $jstext
|
return; |
return; |
} |
} |
|
|
|
$intauthjs |
|
|
// ]]> |
// ]]> |
</script> |
</script> |
|
|
ENDSCRIPT |
ENDSCRIPT |
|
} else { |
|
return &Apache::lonhtmlcommon::scripttag($intauthjs); |
} |
} |
} |
} |
|
|
Line 11734 sub modify_defaults {
|
Line 11852 sub modify_defaults {
|
my ($dom,$lastactref,%domconfig) = @_; |
my ($dom,$lastactref,%domconfig) = @_; |
my ($resulttext,$mailmsgtxt,%newvalues,%changes,@errors); |
my ($resulttext,$mailmsgtxt,%newvalues,%changes,@errors); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1); |
my @items = ('auth_def','auth_arg_def','lang_def','timezone_def','datelocale_def','portal_def'); |
my @items = ('auth_def','auth_arg_def','lang_def','timezone_def','datelocale_def', |
|
'portal_def','intauth_cost','intauth_check','intauth_switch'); |
my @authtypes = ('internal','krb4','krb5','localauth'); |
my @authtypes = ('internal','krb4','krb5','localauth'); |
foreach my $item (@items) { |
foreach my $item (@items) { |
$newvalues{$item} = $env{'form.'.$item}; |
$newvalues{$item} = $env{'form.'.$item}; |
Line 11776 sub modify_defaults {
|
Line 11895 sub modify_defaults {
|
push(@errors,$item); |
push(@errors,$item); |
} |
} |
} |
} |
|
} elsif ($item eq 'intauth_cost') { |
|
if ($newvalues{$item} ne '') { |
|
if ($newvalues{$item} =~ /\D/) { |
|
push(@errors,$item); |
|
} |
|
} |
|
} elsif ($item eq 'intauth_check') { |
|
if ($newvalues{$item} ne '') { |
|
unless ($newvalues{$item} =~ /^(0|1|2)$/) { |
|
push(@errors,$item); |
|
} |
|
} |
|
} elsif ($item eq 'intauth_switch') { |
|
if ($newvalues{$item} ne '') { |
|
unless ($newvalues{$item} =~ /^(0|1|2)$/) { |
|
push(@errors,$item); |
|
} |
|
} |
} |
} |
if (grep(/^\Q$item\E$/,@errors)) { |
if (grep(/^\Q$item\E$/,@errors)) { |
$newvalues{$item} = $domdefaults{$item}; |
$newvalues{$item} = $domdefaults{$item}; |
Line 11930 sub modify_defaults {
|
Line 12067 sub modify_defaults {
|
localauth => 'loc', |
localauth => 'loc', |
); |
); |
$value = $authnames{$shortauth{$value}}; |
$value = $authnames{$shortauth{$value}}; |
|
} elsif ($item eq 'intauth_switch') { |
|
my %optiondesc = &Apache::lonlocal::texthash ( |
|
0 => 'No', |
|
1 => 'Yes', |
|
2 => 'Yes, and copy existing passwd file to passwd.bak file', |
|
); |
|
if ($value =~ /^(0|1|2)$/) { |
|
$value = $optiondesc{$value}; |
|
} else { |
|
$value = &mt('none -- defaults to No'); |
|
} |
|
} elsif ($item eq 'intauth_check') { |
|
my %optiondesc = &Apache::lonlocal::texthash ( |
|
0 => 'No', |
|
1 => 'Yes, allow login then update passwd file using default cost (if higher)', |
|
2 => 'Yes, disallow login if stored cost is less than domain default', |
|
); |
|
if ($value =~ /^(0|1|2)$/) { |
|
$value = $optiondesc{$value}; |
|
} else { |
|
$value = &mt('none -- defaults to No'); |
|
} |
} |
} |
$resulttext .= '<li>'.&mt('[_1] set to "[_2]"',$title->{$item},$value).'</li>'; |
$resulttext .= '<li>'.&mt('[_1] set to "[_2]"',$title->{$item},$value).'</li>'; |
$mailmsgtext .= "$title->{$item} set to $value\n"; |
$mailmsgtext .= "$title->{$item} set to $value\n"; |