version 1.41, 2008/01/16 20:42:48
|
version 1.43, 2008/02/24 23:18:40
|
Line 36 use Apache::lonnet;
|
Line 36 use Apache::lonnet;
|
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
|
use Apache::lonmsg(); |
use LONCAPA(); |
use LONCAPA(); |
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
use File::Copy; |
use File::Copy; |
|
use Locale::Language; |
|
|
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
Line 68 sub handler {
|
Line 70 sub handler {
|
my %domconfig = |
my %domconfig = |
&Apache::lonnet::get_dom('configuration',['login','rolecolors', |
&Apache::lonnet::get_dom('configuration',['login','rolecolors', |
'quotas','autoenroll','autoupdate','directorysrch', |
'quotas','autoenroll','autoupdate','directorysrch', |
'usercreation','usermodification','contacts'],$dom); |
'usercreation','usermodification','contacts','defaults'],$dom); |
my @prefs_order = ('rolecolors','login','quotas','autoenroll', |
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll', |
'autoupdate','directorysrch','contacts', |
'autoupdate','directorysrch','contacts', |
'usercreation','usermodification'); |
'usercreation','usermodification'); |
my %prefs = ( |
my %prefs = ( |
Line 91 sub handler {
|
Line 93 sub handler {
|
header => [{col1 => 'Item', |
header => [{col1 => 'Item', |
col2 => '',}], |
col2 => '',}], |
}, |
}, |
|
'defaults' => |
|
{ text => 'Default authentication/language', |
|
help => '', |
|
header => [{col1 => 'Setting', |
|
col2 => 'Value'}], |
|
}, |
'quotas' => |
'quotas' => |
{ text => 'Default quotas for user portfolios', |
{ text => 'Default quotas for user portfolios', |
help => 'Default_User_Quota', |
help => 'Default_User_Quota', |
Line 108 sub handler {
|
Line 116 sub handler {
|
help => 'Domain_Auto_Update', |
help => 'Domain_Auto_Update', |
header => [{col1 => 'Setting', |
header => [{col1 => 'Setting', |
col2 => 'Value',}, |
col2 => 'Value',}, |
{col1 => 'User Population', |
{col1 => 'User population', |
col2 => 'Updataeable user data'}], |
col2 => 'Updataeable user data'}], |
}, |
}, |
'directorysrch' => |
'directorysrch' => |
Line 127 sub handler {
|
Line 135 sub handler {
|
'usercreation' => |
'usercreation' => |
{ text => 'User creation', |
{ text => 'User creation', |
help => 'Domain_User_Creation', |
help => 'Domain_User_Creation', |
header => [{col1 => 'Format Rule Type', |
header => [{col1 => 'Format rule type', |
col2 => 'Format Rules in force'}, |
col2 => 'Format rules in force'}, |
{col1 => 'User account creation', |
{col1 => 'User account creation', |
col2 => 'Usernames which may be created',}, |
col2 => 'Usernames which may be created',}, |
{col1 => 'Context', |
{col1 => 'Context', |
col2 => 'Assignable Authentication Types'}], |
col2 => 'Assignable authentication types'}], |
}, |
}, |
'usermodification' => |
'usermodification' => |
{ text => 'User modification', |
{ text => 'User modification', |
Line 333 sub process_changes {
|
Line 341 sub process_changes {
|
$output = &modify_usermodification($dom,%domconfig); |
$output = &modify_usermodification($dom,%domconfig); |
} elsif ($action eq 'contacts') { |
} elsif ($action eq 'contacts') { |
$output = &modify_contacts($dom,%domconfig); |
$output = &modify_contacts($dom,%domconfig); |
|
} elsif ($action eq 'defaults') { |
|
$output = &modify_defaults($dom,$r); |
} |
} |
return $output; |
return $output; |
} |
} |
Line 454 sub print_config_box {
|
Line 464 sub print_config_box {
|
$output .= &print_directorysrch($dom,$settings,\$rowtotal); |
$output .= &print_directorysrch($dom,$settings,\$rowtotal); |
} elsif ($action eq 'contacts') { |
} elsif ($action eq 'contacts') { |
$output .= &print_contacts($dom,$settings,\$rowtotal); |
$output .= &print_contacts($dom,$settings,\$rowtotal); |
|
} elsif ($action eq 'defaults') { |
|
$output .= &print_defaults($dom,\$rowtotal); |
} |
} |
} |
} |
$output .= ' |
$output .= ' |
Line 568 sub print_footer {
|
Line 580 sub print_footer {
|
sub print_login { |
sub print_login { |
my ($dom,$confname,$phase,$settings,$rowtotal) = @_; |
my ($dom,$confname,$phase,$settings,$rowtotal) = @_; |
my %choices = &login_choices(); |
my %choices = &login_choices(); |
my ($catalogon,$catalogoff,$adminmailon,$adminmailoff,$loginheader); |
my %defaultchecked = ( |
$catalogon = ' checked="checked" '; |
'coursecatalog' => 'on', |
$adminmailoff = ' checked="checked" '; |
'adminmail' => 'off', |
$loginheader = 'image'; |
'newuser' => 'off', |
|
); |
|
my @toggles = ('coursecatalog','adminmail','newuser'); |
|
my (%checkedon,%checkedoff); |
|
foreach my $item (@toggles) { |
|
if ($defaultchecked{$item} eq 'on') { |
|
$checkedon{$item} = ' checked="checked" '; |
|
$checkedoff{$item} = ' '; |
|
} elsif ($defaultchecked{$item} eq 'off') { |
|
$checkedoff{$item} = ' checked="checked" '; |
|
$checkedon{$item} = ' '; |
|
} |
|
} |
|
my $loginheader = 'image'; |
my @images = ('img','logo','domlogo','login'); |
my @images = ('img','logo','domlogo','login'); |
my @logintext = ('textcol','bgcol'); |
my @logintext = ('textcol','bgcol'); |
my @bgs = ('pgbg','mainbg','sidebg'); |
my @bgs = ('pgbg','mainbg','sidebg'); |
Line 595 sub print_login {
|
Line 620 sub print_login {
|
$defaults{'links'}{$item} = $defaultdesign{'login.'.$item}; |
$defaults{'links'}{$item} = $defaultdesign{'login.'.$item}; |
} |
} |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if ($settings->{'coursecatalog'} eq '0') { |
foreach my $item (@toggles) { |
$catalogoff = $catalogon; |
if ($settings->{$item} eq '1') { |
$catalogon = ' '; |
$checkedon{$item} = ' checked="checked" '; |
} |
$checkedoff{$item} = ' '; |
if ($settings->{'adminmail'} eq '1') { |
} elsif ($settings->{$item} eq '0') { |
$adminmailon = $adminmailoff; |
$checkedoff{$item} = ' checked="checked" '; |
$adminmailoff = ' '; |
$checkedon{$item} = ' '; |
|
} |
} |
} |
foreach my $item (@images) { |
foreach my $item (@images) { |
if ($settings->{$item} ne '') { |
if ($settings->{$item} ne '') { |
Line 663 sub print_login {
|
Line 689 sub print_login {
|
domlogo => 'Domain Logo', |
domlogo => 'Domain Logo', |
login => 'Login box'); |
login => 'Login box'); |
my $itemcount = 1; |
my $itemcount = 1; |
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my ($css_class,$datatable); |
my $datatable = |
foreach my $item (@toggles) { |
'<tr'.$css_class.'><td colspan="2">'.$choices{'coursecatalog'}. |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
'</td><td>'. |
$datatable .= |
'<span class="LC_nobreak"><label><input type="radio" name="coursecatalog"'. |
'<tr'.$css_class.'><td colspan="2">'.$choices{$item}. |
$catalogon.' value="1" />'.&mt('Yes').'</label> '. |
'</td><td>'. |
'<label><input type="radio" name="coursecatalog"'. |
'<span class="LC_nobreak"><label><input type="radio" name="'. |
$catalogoff.'value="0" />'.&mt('No').'</label></span></td>'. |
$item.'"'.$checkedon{$item}.' value="1" />'.&mt('Yes'). |
'</tr>'; |
'</label> <label><input type="radio" name="'.$item.'"'. |
$itemcount ++; |
$checkedoff{$item}.' value="0" />'.&mt('No').'</label></span></td>'. |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
'</tr>'; |
$datatable .= '<tr'.$css_class.'>'. |
$itemcount ++; |
'<td colspan="2">'.$choices{'adminmail'}.'</td>'. |
} |
'<td><span class="LC_nobreak">'. |
|
'<label><input type="radio" name="adminmail"'. |
|
$adminmailon.' value="1" />'.&mt('Yes').'</label> '. |
|
'<label><input type="radio" name="adminmail"'. |
|
$adminmailoff.'value="0" />'.&mt('No').'</label></span></td></tr>'; |
|
$itemcount ++; |
|
$datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal,\@logintext,$loginheader); |
$datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text,$rowtotal,\@logintext,$loginheader); |
$datatable .= '</tr></table></td></tr>'; |
$datatable .= '</tr></table></td></tr>'; |
return $datatable; |
return $datatable; |
Line 692 sub login_choices {
|
Line 712 sub login_choices {
|
&Apache::lonlocal::texthash ( |
&Apache::lonlocal::texthash ( |
coursecatalog => 'Display Course Catalog link?', |
coursecatalog => 'Display Course Catalog link?', |
adminmail => "Display Administrator's E-mail Address?", |
adminmail => "Display Administrator's E-mail Address?", |
|
newuser => "Link to create a user account", |
img => "Header", |
img => "Header", |
logo => "Main Logo", |
logo => "Main Logo", |
domlogo => "Domain Logo", |
domlogo => "Domain Logo", |
Line 1472 sub print_usercreation {
|
Line 1493 sub print_usercreation {
|
$rowcount ++; |
$rowcount ++; |
} |
} |
} |
} |
|
my ($emailrules,$emailruleorder) = |
|
&Apache::lonnet::inst_userrules($dom,'email'); |
|
if (ref($emailrules) eq 'HASH') { |
|
if (keys(%{$emailrules}) > 0) { |
|
$datatable .= &user_formats_row('email',$settings,$emailrules, |
|
$emailruleorder,$numinrow,$rowcount); |
|
$$rowtotal ++; |
|
$rowcount ++; |
|
} |
|
} |
if ($rowcount == 0) { |
if ($rowcount == 0) { |
$datatable .= '<tr><td colspan="2">'.&mt('No format rules have been defined for usernames or IDs in this domain.').'</td></tr>'; |
$datatable .= '<tr><td colspan="2">'.&mt('No format rules have been defined for usernames or IDs in this domain.').'</td></tr>'; |
$$rowtotal ++; |
$$rowtotal ++; |
$rowcount ++; |
$rowcount ++; |
} |
} |
} elsif ($position eq 'middle') { |
} elsif ($position eq 'middle') { |
my @creators = ('author','course'); |
my @creators = ('author','course','selfenroll'); |
my ($rules,$ruleorder) = |
my ($rules,$ruleorder) = |
&Apache::lonnet::inst_userrules($dom,'username'); |
&Apache::lonnet::inst_userrules($dom,'username'); |
my %lt = &usercreation_types(); |
my %lt = &usercreation_types(); |
Line 1500 sub print_usercreation {
|
Line 1531 sub print_usercreation {
|
foreach my $item (@creators) { |
foreach my $item (@creators) { |
$rownum ++; |
$rownum ++; |
if ($checked{$item} eq '') { |
if ($checked{$item} eq '') { |
$checked{$item} = 'any'; |
if ($item eq 'selfenroll') { |
|
$checked{$item} = 'none'; |
|
} else { |
|
$checked{$item} = 'any'; |
|
} |
} |
} |
my $css_class; |
my $css_class; |
if ($rownum%2) { |
if ($rownum%2) { |
Line 1512 sub print_usercreation {
|
Line 1547 sub print_usercreation {
|
'<td><span class="LC_nobreak">'.$lt{$item}. |
'<td><span class="LC_nobreak">'.$lt{$item}. |
'</span></td><td align="right">'; |
'</span></td><td align="right">'; |
my @options = ('any'); |
my @options = ('any'); |
if (ref($rules) eq 'HASH') { |
if ($item eq 'selfenroll') { |
if (keys(%{$rules}) > 0) { |
push(@options,('email','login','sso')); |
push(@options,('official','unofficial')); |
} else { |
|
if (ref($rules) eq 'HASH') { |
|
if (keys(%{$rules}) > 0) { |
|
push(@options,('official','unofficial')); |
|
} |
} |
} |
} |
} |
push(@options,'none'); |
push(@options,'none'); |
Line 1587 sub user_formats_row {
|
Line 1626 sub user_formats_row {
|
my %text = ( |
my %text = ( |
'username' => 'new usernames', |
'username' => 'new usernames', |
'id' => 'IDs', |
'id' => 'IDs', |
|
'email' => 'e-mail addresses of self-enrollers', |
); |
); |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
my $css_class = $rowcount%2?' class="LC_odd_row"':''; |
$output = '<tr '.$css_class.'>'. |
$output = '<tr '.$css_class.'>'. |
Line 1637 sub usercreation_types {
|
Line 1677 sub usercreation_types {
|
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
author => 'When adding a co-author', |
author => 'When adding a co-author', |
course => 'When adding a user to a course', |
course => 'When adding a user to a course', |
|
selfenroll => 'When a user is self-enrolling', |
any => 'Any', |
any => 'Any', |
official => 'Institutional only ', |
official => 'Institutional only ', |
unofficial => 'Non-institutional only', |
unofficial => 'Non-institutional only', |
|
email => 'Email address', |
|
login => 'Institutional Login', |
|
sso => 'SSO', |
none => 'None', |
none => 'None', |
); |
); |
return %lt; |
return %lt; |
Line 1690 sub print_usermodification {
|
Line 1734 sub print_usermodification {
|
return $datatable; |
return $datatable; |
} |
} |
|
|
|
sub print_defaults { |
|
my ($dom,$rowtotal) = @_; |
|
my @items = ('auth_def','auth_arg_def','lang_def'); |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
|
my $titles = &defaults_titles(); |
|
my $rownum = 0; |
|
my ($datatable,$css_class); |
|
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_right_item">'; |
|
if ($item eq 'auth_def') { |
|
my @authtypes = ('internal','krb4','krb5','localauth'); |
|
my %shortauth = ( |
|
internal => 'int', |
|
krb4 => 'krb4', |
|
krb5 => 'krb5', |
|
localauth => 'loc' |
|
); |
|
my %authnames = &authtype_names(); |
|
foreach my $auth (@authtypes) { |
|
my $checked = ' '; |
|
if ($domdefaults{$item} eq $auth) { |
|
$checked = ' checked="checked" '; |
|
} |
|
$datatable .= '<label><input type="radio" name="'.$item. |
|
'" value="'.$auth.'"'.$checked.'/>'. |
|
$authnames{$shortauth{$auth}}.'</label> '; |
|
} |
|
} else { |
|
$datatable .= '<input type="text" name="'.$item.'" value="'. |
|
$domdefaults{$item}.'" />'; |
|
} |
|
$datatable .= '</td></tr>'; |
|
$rownum ++; |
|
} |
|
$$rowtotal += $rownum; |
|
return $datatable; |
|
} |
|
|
|
sub defaults_titles { |
|
my %titles = &Apache::lonlocal::texthash ( |
|
'auth_def' => 'Default authentication type', |
|
'auth_arg_def' => 'Default authentication argument', |
|
'lang_def' => 'Default language', |
|
); |
|
return (\%titles); |
|
} |
|
|
|
|
sub modifiable_userdata_row { |
sub modifiable_userdata_row { |
my ($context,$role,$settings,$numinrow,$rowcount) = @_; |
my ($context,$role,$settings,$numinrow,$rowcount) = @_; |
my $rolename; |
my $rolename; |
Line 1901 sub modify_login {
|
Line 2000 sub modify_login {
|
my ($resulttext,$errors,$colchgtext,%changes,%colchanges); |
my ($resulttext,$errors,$colchgtext,%changes,%colchanges); |
my %title = ( coursecatalog => 'Display course catalog', |
my %title = ( coursecatalog => 'Display course catalog', |
adminmail => 'Display administrator E-mail address', |
adminmail => 'Display administrator E-mail address', |
|
newuser => 'Link for visitors to create a user account', |
loginheader => 'Log-in box header'); |
loginheader => 'Log-in box header'); |
my @offon = ('off','on'); |
my @offon = ('off','on'); |
my %loginhash; |
my %loginhash; |
($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'], |
($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'], |
\%domconfig,\%loginhash); |
\%domconfig,\%loginhash); |
$loginhash{login}{coursecatalog} = $env{'form.coursecatalog'}; |
my @toggles = ('coursecatalog','adminmail','newuser'); |
$loginhash{login}{adminmail} = $env{'form.adminmail'}; |
foreach my $item (@toggles) { |
|
$loginhash{login}{$item} = $env{'form.'.$item}; |
|
} |
$loginhash{login}{loginheader} = $env{'form.loginheader'}; |
$loginhash{login}{loginheader} = $env{'form.loginheader'}; |
if (ref($colchanges{'login'}) eq 'HASH') { |
if (ref($colchanges{'login'}) eq 'HASH') { |
$colchgtext = &display_colorchgs($dom,\%colchanges,['login'], |
$colchgtext = &display_colorchgs($dom,\%colchanges,['login'], |
Line 1916 sub modify_login {
|
Line 2018 sub modify_login {
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash, |
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash, |
$dom); |
$dom); |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
if (($domconfig{'login'}{'coursecatalog'} eq '0') && |
my @toggles = ('coursecatalog','adminmail','newuser'); |
($env{'form.coursecatalog'} eq '1')) { |
my %defaultchecked = ( |
$changes{'coursecatalog'} = 1; |
'coursecatalog' => 'on', |
} elsif (($domconfig{'login'}{'coursecatalog'} eq '' || |
'adminmail' => 'off', |
$domconfig{'login'}{'coursecatalog'} eq '1') && |
'newuser' => 'off', |
($env{'form.coursecatalog'} eq '0')) { |
); |
$changes{'coursecatalog'} = 1; |
foreach my $item (@toggles) { |
} |
if ($defaultchecked{$item} eq 'on') { |
if (($domconfig{'login'}{'adminmail'} eq '1') && |
if (($domconfig{'login'}{$item} eq '0') && |
($env{'form.adminmail'} eq '0')) { |
($env{'form.'.$item} eq '1')) { |
$changes{'adminmail'} = 1; |
$changes{$item} = 1; |
} elsif (($domconfig{'login'}{'adminmail'} eq '' || |
} elsif (($domconfig{'login'}{$item} eq '' || |
$domconfig{'login'}{'adminmail'} eq '0') && |
$domconfig{'login'}{$item} eq '1') && |
($env{'form.adminmail'} eq '1')) { |
($env{'form.'.$item} eq '0')) { |
$changes{'adminmail'} = 1; |
$changes{$item} = 1; |
|
} |
|
} elsif ($defaultchecked{$item} eq 'off') { |
|
if (($domconfig{'login'}{$item} eq '1') && |
|
($env{'form.'.$item} eq '0')) { |
|
$changes{$item} = 1; |
|
} elsif (($domconfig{'login'}{$item} eq '' || |
|
$domconfig{'login'}{$item} eq '0') && |
|
($env{'form.'.$item} eq '1')) { |
|
$changes{$item} = 1; |
|
} |
|
} |
} |
} |
if (($domconfig{'login'}{'loginheader'} eq 'text') && |
if (($domconfig{'login'}{'loginheader'} eq 'text') && |
($env{'form.loginheader'} eq 'image')) { |
($env{'form.loginheader'} eq 'image')) { |
Line 3078 sub modify_contacts {
|
Line 3191 sub modify_contacts {
|
sub modify_usercreation { |
sub modify_usercreation { |
my ($dom,%domconfig) = @_; |
my ($dom,%domconfig) = @_; |
my ($resulttext,%curr_usercreation,%changes,%authallowed,%cancreate); |
my ($resulttext,%curr_usercreation,%changes,%authallowed,%cancreate); |
|
my $warningmsg; |
if (ref($domconfig{'usercreation'}) eq 'HASH') { |
if (ref($domconfig{'usercreation'}) eq 'HASH') { |
foreach my $key (keys(%{$domconfig{'usercreation'}})) { |
foreach my $key (keys(%{$domconfig{'usercreation'}})) { |
$curr_usercreation{$key} = $domconfig{'usercreation'}{$key}; |
$curr_usercreation{$key} = $domconfig{'usercreation'}{$key}; |
} |
} |
} |
} |
my %title = &Apache::lonlocal::texthash ( |
|
author => 'adding co-authors/assistant authors', |
|
course => 'adding users to a course', |
|
); |
|
my @username_rule = &Apache::loncommon::get_env_multiple('form.username_rule'); |
my @username_rule = &Apache::loncommon::get_env_multiple('form.username_rule'); |
my @id_rule = &Apache::loncommon::get_env_multiple('form.id_rule'); |
my @id_rule = &Apache::loncommon::get_env_multiple('form.id_rule'); |
my @contexts = ('author','course'); |
my @email_rule = &Apache::loncommon::get_env_multiple('form.email_rule'); |
|
my @contexts = ('author','course','selfenroll'); |
foreach my $item(@contexts) { |
foreach my $item(@contexts) { |
$cancreate{$item} = $env{'form.can_createuser_'.$item}; |
$cancreate{$item} = $env{'form.can_createuser_'.$item}; |
|
if ($item eq 'selfenroll') { |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
|
if (!((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || ($domdefaults{'auth_def'} eq 'localauth'))) { |
|
if (($cancreate{$item} eq 'any') || ($cancreate{$item} eq 'login')) { |
|
$warningmsg = &mt('Although account creation has been set to be available for institutional logins, currently default authentication in this domain has not been set to support this.').' '.&mt('You need to set the default authentication type to Kerberos 4 or 5 (with a Kerberos domain specified), or to Local authentication, if the localauth module has been customized in your domain to authenticate institutional logins.'); |
|
} |
|
} |
|
} |
} |
} |
if (ref($curr_usercreation{'cancreate'}) eq 'HASH') { |
if (ref($curr_usercreation{'cancreate'}) eq 'HASH') { |
foreach my $item (@contexts) { |
foreach my $item (@contexts) { |
Line 3101 sub modify_usercreation {
|
Line 3220 sub modify_usercreation {
|
} |
} |
} elsif (ref($curr_usercreation{'cancreate'}) eq 'ARRAY') { |
} elsif (ref($curr_usercreation{'cancreate'}) eq 'ARRAY') { |
foreach my $item (@contexts) { |
foreach my $item (@contexts) { |
if (grep(/^\Q$item\E$/,@{$curr_usercreation{'cancreate'}})) { |
if (!grep(/^\Q$item\E$/,@{$curr_usercreation{'cancreate'}})) { |
if ($cancreate{$item} ne 'any') { |
if ($cancreate{$item} ne 'any') { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
Line 3112 sub modify_usercreation {
|
Line 3231 sub modify_usercreation {
|
} |
} |
} |
} |
} else { |
} else { |
foreach my $item ('author','course') { |
foreach my $item (@contexts) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
Line 3147 sub modify_usercreation {
|
Line 3266 sub modify_usercreation {
|
push(@{$changes{'id_rule'}},@id_rule); |
push(@{$changes{'id_rule'}},@id_rule); |
} |
} |
|
|
my @contexts = ('author','course','domain'); |
if (ref($curr_usercreation{'email_rule'}) eq 'ARRAY') { |
|
foreach my $type (@{$curr_usercreation{'email_rule'}}) { |
|
if (!grep(/^\Q$type\E$/,@email_rule)) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
foreach my $type (@email_rule) { |
|
if (!grep(/^\Q$type\E$/,@{$curr_usercreation{'email_rule'}})) { |
|
push(@{$changes{'email_rule'}},$type); |
|
} |
|
} |
|
} else { |
|
push(@{$changes{'email_rule'}},@email_rule); |
|
} |
|
|
|
my @authen_contexts = ('author','course','domain'); |
my @authtypes = ('int','krb4','krb5','loc'); |
my @authtypes = ('int','krb4','krb5','loc'); |
my %authhash; |
my %authhash; |
foreach my $item (@contexts) { |
foreach my $item (@authen_contexts) { |
my @authallowed = &Apache::loncommon::get_env_multiple('form.'.$item.'_auth'); |
my @authallowed = &Apache::loncommon::get_env_multiple('form.'.$item.'_auth'); |
foreach my $auth (@authtypes) { |
foreach my $auth (@authtypes) { |
if (grep(/^\Q$auth\E$/,@authallowed)) { |
if (grep(/^\Q$auth\E$/,@authallowed)) { |
Line 3161 sub modify_usercreation {
|
Line 3295 sub modify_usercreation {
|
} |
} |
} |
} |
if (ref($curr_usercreation{'authtypes'}) eq 'HASH') { |
if (ref($curr_usercreation{'authtypes'}) eq 'HASH') { |
foreach my $item (@contexts) { |
foreach my $item (@authen_contexts) { |
if (ref($curr_usercreation{'authtypes'}{$item}) eq 'HASH') { |
if (ref($curr_usercreation{'authtypes'}{$item}) eq 'HASH') { |
foreach my $auth (@authtypes) { |
foreach my $auth (@authtypes) { |
if ($authhash{$item}{$auth} ne $curr_usercreation{'authtypes'}{$item}{$auth}) { |
if ($authhash{$item}{$auth} ne $curr_usercreation{'authtypes'}{$item}{$auth}) { |
Line 3172 sub modify_usercreation {
|
Line 3306 sub modify_usercreation {
|
} |
} |
} |
} |
} else { |
} else { |
foreach my $item (@contexts) { |
foreach my $item (@authen_contexts) { |
push(@{$changes{'authtypes'}},$item); |
push(@{$changes{'authtypes'}},$item); |
} |
} |
} |
} |
Line 3182 sub modify_usercreation {
|
Line 3316 sub modify_usercreation {
|
cancreate => \%cancreate, |
cancreate => \%cancreate, |
username_rule => \@username_rule, |
username_rule => \@username_rule, |
id_rule => \@id_rule, |
id_rule => \@id_rule, |
|
email_rule => \@email_rule, |
authtypes => \%authhash, |
authtypes => \%authhash, |
} |
} |
); |
); |
Line 3194 sub modify_usercreation {
|
Line 3329 sub modify_usercreation {
|
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
if (ref($changes{'cancreate'}) eq 'ARRAY') { |
my %lt = &usercreation_types(); |
my %lt = &usercreation_types(); |
foreach my $type (@{$changes{'cancreate'}}) { |
foreach my $type (@{$changes{'cancreate'}}) { |
my $chgtext; |
my $chgtext = $lt{$type}.', '; |
if ($cancreate{$type} eq 'none') { |
if ($type eq 'selfenroll') { |
$chgtext = $lt{$type}.' '.&mt('creation of new users is not permitted, except by a Domain Coordinator.'); |
if ($cancreate{$type} eq 'none') { |
} elsif ($cancreate{$type} eq 'any') { |
$chgtext .= &mt('creation of a new user account is not permitted.'); |
$chgtext = $lt{$type}.' '.&mt('creation of new users is permitted for both institutional and non-institutional usernames.'); |
} elsif ($cancreate{$type} eq 'any') { |
} elsif ($cancreate{$type} eq 'official') { |
$chgtext .= &mt('creation of a new account is permitted for users authenticated by institutional log-in and SSO, and also for e-mail addresses used as usernames.'); |
$chgtext = $lt{$type}.' '.&mt('creation of new users is only permitted for institutional usernames.',$lt{$type}); |
} elsif ($cancreate{$type} eq 'login') { |
} elsif ($cancreate{$type} eq 'unofficial') { |
$chgtext .= &mt('creation of a new account is only permitted for users authenticated by institutional log-in.'); |
$chgtext = $lt{$type}.' '.&mt('creation of new users is only permitted for non-institutional usernames.',$lt{$type}); |
} elsif ($cancreate{$type} eq 'sso') { |
|
$chgtext .= &mt('creation of a new account is only permitted for users authenticated by institutional single sign on.'); |
|
} elsif ($cancreate{$type} eq 'email') { |
|
$chgtext .= &mt('creation of a new account is only permitted for users who provide a valid e-mail address for use as the username.'); |
|
} |
|
} else { |
|
if ($cancreate{$type} eq 'none') { |
|
$chgtext .= &mt('creation of new users is not permitted, except by a Domain Coordinator.'); |
|
} elsif ($cancreate{$type} eq 'any') { |
|
$chgtext .= &mt('creation of new users is permitted for both institutional and non-institutional usernames.'); |
|
} elsif ($cancreate{$type} eq 'official') { |
|
$chgtext .= &mt('creation of new users is only permitted for institutional usernames.'); |
|
} elsif ($cancreate{$type} eq 'unofficial') { |
|
$chgtext .= &mt('creation of new users is only permitted for non-institutional usernames.'); |
|
} |
} |
} |
$resulttext .= '<li>'.$chgtext.'</li>'; |
$resulttext .= '<li>'.$chgtext.'</li>'; |
} |
} |
Line 3239 sub modify_usercreation {
|
Line 3388 sub modify_usercreation {
|
$resulttext .= '<li>'.&mt('There are now no ID formats restricted to verified users in the institutional directory.').'</li>'; |
$resulttext .= '<li>'.&mt('There are now no ID formats restricted to verified users in the institutional directory.').'</li>'; |
} |
} |
} |
} |
|
if (ref($changes{'email_rule'}) eq 'ARRAY') { |
|
my ($emailrules,$emailruleorder) = |
|
&Apache::lonnet::inst_userrules($dom,'email'); |
|
my $chgtext = '<ul>'; |
|
foreach my $type (@email_rule) { |
|
if (ref($emailrules->{$type}) eq 'HASH') { |
|
$chgtext .= '<li>'.$emailrules->{$type}{'name'}.'</li>'; |
|
} |
|
} |
|
$chgtext .= '</ul>'; |
|
if (@email_rule > 0) { |
|
$resulttext .= '<li>'.&mt('Accounts may not be created by users self-enrolling with e-mail addresses of the following types: ').$chgtext.'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt('There are now no restrictions on e-mail addresses which may be used as a username when self-enrolling.').'</li>'; |
|
} |
|
} |
|
|
my %authname = &authtype_names(); |
my %authname = &authtype_names(); |
my %context_title = &context_names(); |
my %context_title = &context_names(); |
if (ref($changes{'authtypes'}) eq 'ARRAY') { |
if (ref($changes{'authtypes'}) eq 'ARRAY') { |
Line 3251 sub modify_usercreation {
|
Line 3417 sub modify_usercreation {
|
push(@allowed,$authname{$auth}); |
push(@allowed,$authname{$auth}); |
} |
} |
} |
} |
$chgtext .= join(', ',@allowed).'</li>'; |
if (@allowed > 0) { |
|
$chgtext .= join(', ',@allowed).'</li>'; |
|
} else { |
|
$chgtext .= &mt('none').'</li>'; |
|
} |
} |
} |
$chgtext .= '</ul>'; |
$chgtext .= '</ul>'; |
$resulttext .= '<li>'.&mt('Authentication types available for assignment to new users').'<br />'.$chgtext; |
$resulttext .= '<li>'.&mt('Authentication types available for assignment to new users').'<br />'.$chgtext; |
Line 3265 sub modify_usercreation {
|
Line 3435 sub modify_usercreation {
|
$resulttext = '<span class="LC_error">'. |
$resulttext = '<span class="LC_error">'. |
&mt('An error occurred: [_1]',$putresult).'</span>'; |
&mt('An error occurred: [_1]',$putresult).'</span>'; |
} |
} |
|
if ($warningmsg ne '') { |
|
$resulttext .= '<br /><span class="LC_warning">'.$warningmsg.'</span><br />'; |
|
} |
return $resulttext; |
return $resulttext; |
} |
} |
|
|
Line 3367 sub modify_usermodification {
|
Line 3540 sub modify_usermodification {
|
} |
} |
return $resulttext; |
return $resulttext; |
} |
} |
|
|
|
sub modify_defaults { |
|
my ($dom,$r) = @_; |
|
my ($resulttext,$mailmsgtxt,%newvalues,%changes,@errors); |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom); |
|
my @items = ('auth_def','auth_arg_def','lang_def'); |
|
my @authtypes = ('internal','krb4','krb5','localauth'); |
|
foreach my $item (@items) { |
|
$newvalues{$item} = $env{'form.'.$item}; |
|
if ($item eq 'auth_def') { |
|
if ($newvalues{$item} ne '') { |
|
if (!grep(/^\Q$newvalues{$item}\E$/,@authtypes)) { |
|
push(@errors,$item); |
|
} |
|
} |
|
} elsif ($item eq 'lang_def') { |
|
if ($newvalues{$item} ne '') { |
|
if ($newvalues{$item} =~ /^(\w+)/) { |
|
my $langcode = $1; |
|
if (code2language($langcode) eq '') { |
|
push(@errors,$item); |
|
} |
|
} else { |
|
push(@errors,$item); |
|
} |
|
} |
|
} |
|
if (grep(/^\Q$item\E$/,@errors)) { |
|
$newvalues{$item} = $domdefaults{$item}; |
|
} elsif ($domdefaults{$item} ne $newvalues{$item}) { |
|
$changes{$item} = 1; |
|
} |
|
} |
|
my %defaults_hash = ( |
|
defaults => { auth_def => $newvalues{'auth_def'}, |
|
auth_arg_def => $newvalues{'auth_arg_def'}, |
|
lang_def => $newvalues{'lang_def'}, |
|
} |
|
); |
|
my $title = &defaults_titles(); |
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%defaults_hash, |
|
$dom); |
|
if ($putresult eq 'ok') { |
|
if (keys(%changes) > 0) { |
|
$resulttext = &mt('Changes made:').'<ul>'; |
|
my $version = $r->dir_config('lonVersion'); |
|
my $mailmsgtext = "Changes made to domain settings in a LON-CAPA installation - domain: $dom (running version: $version) - dns_domain.tab needs to be updated with the following changes, to support legacy 2.4, 2.5 and 2.6 versions of LON-CAPA.\n\n"; |
|
foreach my $item (sort(keys(%changes))) { |
|
my $value = $env{'form.'.$item}; |
|
if ($value eq '') { |
|
$value = &mt('none'); |
|
} elsif ($item eq 'auth_def') { |
|
my %authnames = &authtype_names(); |
|
my %shortauth = ( |
|
internal => 'int', |
|
krb4 => 'krb4', |
|
krb5 => 'krb5', |
|
localauth => 'loc', |
|
); |
|
$value = $authnames{$shortauth{$value}}; |
|
} |
|
$resulttext .= '<li>'.&mt('[_1] set to "[_2]"',$title->{$item},$value).'</li>'; |
|
$mailmsgtext .= "$title->{$item} set to $value\n"; |
|
} |
|
$resulttext .= '</ul>'; |
|
$mailmsgtext .= "\n"; |
|
my $cachetime = 24*60*60; |
|
&Apache::lonnet::do_cache_new('domdefaults',$dom, |
|
$defaults_hash{'defaults'},$cachetime); |
|
my $sysmail = $r->dir_config('lonSysEMail'); |
|
&Apache::lonmsg::sendemail($sysmail,"LON-CAPA Domain Settings Change - $dom",$mailmsgtext); |
|
} else { |
|
$resulttext = &mt('No changes made to default authentication/language settings'); |
|
} |
|
} else { |
|
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
|
} |
|
if (@errors > 0) { |
|
$resulttext .= '<br />'.&mt('The following were left unchanged because the values entered were invalid:'); |
|
foreach my $item (@errors) { |
|
$resulttext .= ' "'.$title->{$item}.'",'; |
|
} |
|
$resulttext =~ s/,$//; |
|
} |
|
return $resulttext; |
|
} |
|
|
1; |
1; |