version 1.42, 2008/02/15 17:02:31
|
version 1.45, 2008/02/29 21:01:36
|
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 569 sub print_login {
|
Line 581 sub print_login {
|
my ($dom,$confname,$phase,$settings,$rowtotal) = @_; |
my ($dom,$confname,$phase,$settings,$rowtotal) = @_; |
my %choices = &login_choices(); |
my %choices = &login_choices(); |
my %defaultchecked = ( |
my %defaultchecked = ( |
'coursecatalog' => 'on', |
'coursecatalog' => 'on', |
'adminmail' => 'off', |
'adminmail' => 'off', |
); |
'newuser' => 'off', |
my @toggles = ('coursecatalog','adminmail'); |
); |
|
my @toggles = ('coursecatalog','adminmail','newuser'); |
my (%checkedon,%checkedoff); |
my (%checkedon,%checkedoff); |
foreach my $item (@toggles) { |
foreach my $item (@toggles) { |
if ($defaultchecked{$item} eq 'on') { |
if ($defaultchecked{$item} eq 'on') { |
Line 699 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 1096 ENDCOL
|
Line 1110 ENDCOL
|
sub print_quotas { |
sub print_quotas { |
my ($dom,$settings,$rowtotal) = @_; |
my ($dom,$settings,$rowtotal) = @_; |
my $datatable; |
my $datatable; |
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my $typecount = 0; |
my $typecount = 0; |
my $css_class; |
my $css_class; |
if (ref($types) eq 'ARRAY') { |
if (ref($types) eq 'ARRAY') { |
Line 1226 sub print_autoupdate {
|
Line 1240 sub print_autoupdate {
|
'</tr>'; |
'</tr>'; |
$$rowtotal += 2; |
$$rowtotal += 2; |
} else { |
} else { |
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my @fields = ('lastname','firstname','middlename','gen', |
my @fields = ('lastname','firstname','middlename','gen', |
'permanentemail','id'); |
'permanentemail','id'); |
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); |
Line 1286 sub print_directorysrch {
|
Line 1300 sub print_directorysrch {
|
} |
} |
} |
} |
my ($searchtitles,$titleorder) = &sorted_searchtitles(); |
my ($searchtitles,$titleorder) = &sorted_searchtitles(); |
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
|
|
my $numinrow = 4; |
my $numinrow = 4; |
my $cansrchrow = 0; |
my $cansrchrow = 0; |
Line 1479 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','selfcreate'); |
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 1507 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 'selfcreate') { |
|
$checked{$item} = 'none'; |
|
} else { |
|
$checked{$item} = 'any'; |
|
} |
} |
} |
my $css_class; |
my $css_class; |
if ($rownum%2) { |
if ($rownum%2) { |
Line 1519 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 'selfcreate') { |
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 1594 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' => 'self-created accounts (e-mail)', |
); |
); |
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 1644 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', |
|
selfcreate => 'User creates own account', |
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 1697 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 1814 sub users_cansearch_row {
|
Line 1906 sub users_cansearch_row {
|
return $output; |
return $output; |
} |
} |
|
|
sub sorted_inst_types { |
|
my ($dom) = @_; |
|
my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom); |
|
my $othertitle = &mt('All users'); |
|
my @types; |
|
if (ref($order) eq 'ARRAY') { |
|
@types = @{$order}; |
|
} |
|
if (@types == 0) { |
|
if (ref($usertypes) eq 'HASH') { |
|
@types = sort(keys(%{$usertypes})); |
|
} |
|
} |
|
if (keys(%{$usertypes}) > 0) { |
|
$othertitle = &mt('Other users'); |
|
} |
|
return ($othertitle,$usertypes,\@types); |
|
} |
|
|
|
sub sorted_searchtitles { |
sub sorted_searchtitles { |
my %searchtitles = &Apache::lonlocal::texthash( |
my %searchtitles = &Apache::lonlocal::texthash( |
'uname' => 'username', |
'uname' => 'username', |
Line 1908 sub modify_login {
|
Line 1981 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); |
my @toggles = ('coursecatalog','adminmail'); |
my @toggles = ('coursecatalog','adminmail','newuser'); |
foreach my $item (@toggles) { |
foreach my $item (@toggles) { |
$loginhash{login}{$item} = $env{'form.'.$item}; |
$loginhash{login}{$item} = $env{'form.'.$item}; |
} |
} |
Line 1925 sub modify_login {
|
Line 1999 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') { |
my @toggles = ('coursecatalog','adminmail'); |
my @toggles = ('coursecatalog','adminmail','newuser'); |
my %defaultchecked = ( |
my %defaultchecked = ( |
'coursecatalog' => 'on', |
'coursecatalog' => 'on', |
'adminmail' => 'off', |
'adminmail' => 'off', |
|
'newuser' => 'off', |
); |
); |
foreach my $item (@toggles) { |
foreach my $item (@toggles) { |
if ($defaultchecked{$item} eq 'on') { |
if ($defaultchecked{$item} eq 'on') { |
Line 2567 END
|
Line 2642 END
|
sub modify_quotas { |
sub modify_quotas { |
my ($dom,%domconfig) = @_; |
my ($dom,%domconfig) = @_; |
my ($resulttext,%changes); |
my ($resulttext,%changes); |
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my %formhash; |
my %formhash; |
foreach my $key (keys(%env)) { |
foreach my $key (keys(%env)) { |
if ($key =~ /^form\.quota_(.+)$/) { |
if ($key =~ /^form\.quota_(.+)$/) { |
Line 2702 sub modify_autoupdate {
|
Line 2777 sub modify_autoupdate {
|
run => 'Auto-update:', |
run => 'Auto-update:', |
classlists => 'Updates to user information in classlists?' |
classlists => 'Updates to user information in classlists?' |
); |
); |
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
my %fieldtitles = &Apache::lonlocal::texthash ( |
my %fieldtitles = &Apache::lonlocal::texthash ( |
id => 'Student/Employee ID', |
id => 'Student/Employee ID', |
permanentemail => 'E-mail address', |
permanentemail => 'E-mail address', |
Line 2831 sub modify_directorysrch {
|
Line 2906 sub modify_directorysrch {
|
my @cansearch = &Apache::loncommon::get_env_multiple('form.cansearch'); |
my @cansearch = &Apache::loncommon::get_env_multiple('form.cansearch'); |
my @searchby = &Apache::loncommon::get_env_multiple('form.searchby'); |
my @searchby = &Apache::loncommon::get_env_multiple('form.searchby'); |
|
|
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); |
if (keys(%{$usertypes}) == 0) { |
if (keys(%{$usertypes}) == 0) { |
@cansearch = ('default'); |
@cansearch = ('default'); |
} else { |
} else { |
Line 3097 sub modify_contacts {
|
Line 3172 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','selfcreate'); |
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 'selfcreate') { |
|
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 3120 sub modify_usercreation {
|
Line 3201 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 3131 sub modify_usercreation {
|
Line 3212 sub modify_usercreation {
|
} |
} |
} |
} |
} else { |
} else { |
foreach my $item ('author','course') { |
foreach my $item (@contexts) { |
push(@{$changes{'cancreate'}},$item); |
push(@{$changes{'cancreate'}},$item); |
} |
} |
} |
} |
Line 3166 sub modify_usercreation {
|
Line 3247 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 3180 sub modify_usercreation {
|
Line 3276 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 3191 sub modify_usercreation {
|
Line 3287 sub modify_usercreation {
|
} |
} |
} |
} |
} else { |
} else { |
foreach my $item (@contexts) { |
foreach my $item (@authen_contexts) { |
push(@{$changes{'authtypes'}},$item); |
push(@{$changes{'authtypes'}},$item); |
} |
} |
} |
} |
Line 3201 sub modify_usercreation {
|
Line 3297 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 3213 sub modify_usercreation {
|
Line 3310 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 'selfcreate') { |
$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 3258 sub modify_usercreation {
|
Line 3369 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 3270 sub modify_usercreation {
|
Line 3398 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 3284 sub modify_usercreation {
|
Line 3416 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 3386 sub modify_usermodification {
|
Line 3521 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; |