version 1.64, 2014/04/23 10:11:26
|
version 1.70, 2015/06/09 21:22:55
|
Line 170 sub handler {
|
Line 170 sub handler {
|
if (grep(/^sso$/,@{$cancreate})) { |
if (grep(/^sso$/,@{$cancreate})) { |
$msg = '<h3>'.&mt('Account creation').'</h3>'. |
$msg = '<h3>'.&mt('Account creation').'</h3>'. |
&mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution.").'<br />'; |
&mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution.").'<br />'; |
|
my $shibenv; |
|
if (($r->dir_config('lonOtherAuthen') eq 'yes') && |
|
($r->dir_config('lonOtherAuthenType') eq 'Shibboleth')) { |
|
if (ref($domconfig{'usercreation'}) eq 'HASH') { |
|
if (ref($domconfig{'usercreation'}{'cancreate'}) eq 'HASH') { |
|
if (ref($domconfig{'usercreation'}{'cancreate'}{'shibenv'}) eq 'HASH') { |
|
my @possfields = ('firstname','middlename','lastname','generation', |
|
'permanentemail','id'); |
|
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($domain); |
|
$shibenv= {}; |
|
foreach my $key (keys(%{$domconfig{'usercreation'}{'cancreate'}{'shibenv'}})) { |
|
if ($key eq 'inststatus') { |
|
if (ref($usertypes) eq 'HASH') { |
|
if ($domconfig{'usercreation'}{'cancreate'}{'shibenv'}{$key} ne '') { |
|
if (exists($usertypes->{$domconfig{'usercreation'}{'cancreate'}{'shibenv'}{$key}})) { |
|
$shibenv->{$key} = $domconfig{'usercreation'}{'cancreate'}{'shibenv'}{$key}; |
|
} |
|
} |
|
} |
|
} elsif (grep(/^\Q$key\E/,@possfields)) { |
|
if ($domconfig{'usercreation'}{'cancreate'}{'shibenv'}{$key} ne '') { |
|
$shibenv->{$key} = $domconfig{'usercreation'}{'cancreate'}{'shibenv'}{$key}; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
$msg .= &username_check($sso_username,$domain,$domdesc,$courseid, |
$msg .= &username_check($sso_username,$domain,$domdesc,$courseid, |
$lonhost,$contact_email,$contact_name, |
$lonhost,$contact_email,$contact_name, |
$sso_logout,$statustocreate); |
$sso_logout,$statustocreate,$shibenv); |
} else { |
} else { |
$msg = '<h3>'.&mt('Account creation unavailable').'</h3>'. |
$msg = '<h3>'.&mt('Account creation unavailable').'</h3>'. |
'<span class="LC_warning">'.&mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution, and you are not permitted to create one.").'</span><br /><br />'.&mt('Please contact the [_1] ([_2]) for assistance.',$contact_name,$contact_email).'<hr />'. |
'<span class="LC_warning">'.&mt("Although your username and password were authenticated by your institution's Single Sign On system, you do not currently have a LON-CAPA account at this institution, and you are not permitted to create one.").'</span><br /><br />'.&mt('Please contact the [_1] ([_2]) for assistance.',$contact_name,$contact_email).'<hr />'. |
Line 249 sub handler {
|
Line 277 sub handler {
|
} elsif (!$token) { |
} elsif (!$token) { |
&print_header($r,$start_page,$courseid); |
&print_header($r,$start_page,$courseid); |
my $now=time; |
my $now=time; |
my $gotlondes; |
if ((grep(/^login$/,@{$cancreate})) && (!grep(/^email$/,@{$cancreate}))) { |
if (grep(/^login$/,@{$cancreate})) { |
|
if (open(my $jsh,"<$include/londes.js")) { |
if (open(my $jsh,"<$include/londes.js")) { |
while(my $line = <$jsh>) { |
while(my $line = <$jsh>) { |
$r->print($line); |
$r->print($line); |
} |
} |
close($jsh); |
close($jsh); |
$r->print(&javascript_setforms($now)); |
$r->print(&javascript_setforms($now)); |
$gotlondes = 1; |
|
} |
} |
} |
} |
if (grep(/^email$/,@{$cancreate})) { |
if (grep(/^email$/,@{$cancreate})) { |
Line 265 sub handler {
|
Line 291 sub handler {
|
} |
} |
my $usertype = &get_usertype($domain); |
my $usertype = &get_usertype($domain); |
$output = &print_username_form($r,$domain,$domdesc,$cancreate,$now,$lonhost, |
$output = &print_username_form($r,$domain,$domdesc,$cancreate,$now,$lonhost, |
$include,$courseid,$gotlondes,$emailusername, |
$include,$courseid,$emailusername,$usertype); |
$usertype); |
|
} |
} |
$r->print($output); |
$r->print($output); |
&print_footer($r); |
&print_footer($r); |
Line 364 sub javascript_setforms {
|
Line 389 sub javascript_setforms {
|
} |
} |
if (@required) { |
if (@required) { |
my $missprompt = &mt('One or more required fields are currently blank.'); |
my $missprompt = &mt('One or more required fields are currently blank.'); |
|
&js_escape(\$missprompt); |
my $reqstr = join("','",@required); |
my $reqstr = join("','",@required); |
$requiredchk = <<"ENDCHK"; |
$requiredchk = <<"ENDCHK"; |
var requiredfields = new Array('$reqstr'); |
var requiredfields = new Array('$reqstr'); |
Line 427 ENDSCRIPT
|
Line 453 ENDSCRIPT
|
sub javascript_checkpass { |
sub javascript_checkpass { |
my ($now,$context) = @_; |
my ($now,$context) = @_; |
my $nopass = &mt('You must enter a password.'); |
my $nopass = &mt('You must enter a password.'); |
my $mismatchpass = &mt('The passwords you entered did not match.').'\\n'. |
my $mismatchpass = &mt('The passwords you entered did not match.')."\n". |
&mt('Please try again.'); |
&mt('Please try again.'); |
|
&js_escape(\$nopass); |
|
&js_escape(\$mismatchpass); |
my $js = <<"ENDSCRIPT"; |
my $js = <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
Line 462 ENDSCRIPT
|
Line 490 ENDSCRIPT
|
} |
} |
|
|
sub javascript_validmail { |
sub javascript_validmail { |
my %lt = &Apache::lonlocal::texthash ( |
my %js_lt = &Apache::lonlocal::texthash ( |
email => 'The e-mail address you entered', |
email => 'The e-mail address you entered', |
notv => 'is not a valid e-mail address', |
notv => 'is not a valid e-mail address', |
); |
); |
my $output = "\n".'<script type="text/javascript">'."\n". |
my $output = "\n".'<script type="text/javascript">'."\n". |
'// <![CDATA['."\n". |
'// <![CDATA['."\n". |
&Apache::lonhtmlcommon::javascript_valid_email()."\n"; |
&Apache::lonhtmlcommon::javascript_valid_email()."\n"; |
|
&js_escape(\%js_lt); |
$output .= <<"ENDSCRIPT"; |
$output .= <<"ENDSCRIPT"; |
function validate_email(client) { |
function validate_email(client) { |
field = client.uname; |
field = client.uname; |
if (validmail(field) == false) { |
if (validmail(field) == false) { |
alert("$lt{'email'}: "+field.value+" $lt{'notv'}."); |
alert("$js_lt{'email'}: "+field.value+" $js_lt{'notv'}."); |
return false; |
return false; |
} |
} |
return true; |
return true; |
Line 484 ENDSCRIPT
|
Line 513 ENDSCRIPT
|
} |
} |
|
|
sub print_username_form { |
sub print_username_form { |
my ($r,$domain,$domdesc,$cancreate,$now,$lonhost,$include,$courseid,$gotlondes,$emailusername, |
my ($r,$domain,$domdesc,$cancreate,$now,$lonhost,$include,$courseid,$emailusername, |
$usertype) = @_; |
$usertype) = @_; |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
unam => 'username', |
unam => 'username', |
Line 543 sub print_username_form {
|
Line 572 sub print_username_form {
|
$lt{'yopw'}.'<br />'; |
$lt{'yopw'}.'<br />'; |
} |
} |
$output .= &print_dataentry_form($r,$domain,$lonhost,$include,$now,$captchaform, |
$output .= &print_dataentry_form($r,$domain,$lonhost,$include,$now,$captchaform, |
$courseid,$gotlondes,$emailusername,$captcha, |
$courseid,$emailusername,$captcha,$usertype); |
$usertype); |
|
} |
} |
$output .= '</div>'; |
$output .= '</div>'; |
} |
} |
Line 832 sub process_mailtoken {
|
Line 860 sub process_mailtoken {
|
|
|
sub start_session { |
sub start_session { |
my ($r,$username,$domain,$uhome,$courseid,$token) = @_; |
my ($r,$username,$domain,$uhome,$courseid,$token) = @_; |
|
my ($is_balancer) = &Apache::lonnet::check_loadbalancing($username,$domain); |
if ($r->dir_config('lonBalancer') eq 'yes') { |
if ($is_balancer) { |
Apache::lonauth::success($r, $username, $domain, $uhome, |
Apache::lonauth::success($r, $username, $domain, $uhome, |
'noredirect', undef, {}); |
'noredirect', undef, {}); |
|
|
Line 847 sub start_session {
|
Line 875 sub start_session {
|
($courseid ? "/adm/selfenroll?courseid=$courseid" : '/adm/roles'), |
($courseid ? "/adm/selfenroll?courseid=$courseid" : '/adm/roles'), |
undef, {}); |
undef, {}); |
} |
} |
|
|
return; |
return; |
} |
} |
|
|
Line 857 sub start_session {
|
Line 884 sub start_session {
|
# Stores token to store DES-key and stage during creation session |
# Stores token to store DES-key and stage during creation session |
# |
# |
sub print_dataentry_form { |
sub print_dataentry_form { |
my ($r,$domain,$lonhost,$include,$now,$captchaform,$courseid,$gotlondes,$emailusername,$captcha, |
my ($r,$domain,$lonhost,$include,$now,$captchaform,$courseid,$emailusername,$captcha, |
$usertype) = @_; |
$usertype) = @_; |
my ($error,$output); |
my ($error,$output); |
unless ($gotlondes) { |
if (open(my $jsh,"<$include/londes.js")) { |
if (open(my $jsh,"<$include/londes.js")) { |
while(my $line = <$jsh>) { |
while(my $line = <$jsh>) { |
$r->print($line); |
$r->print($line); |
} |
} |
close($jsh); |
close($jsh); |
$output = &javascript_setforms($now,$emailusername,$captcha,$usertype)."\n". |
$output = &javascript_setforms($now,$emailusername,$captcha,$usertype)."\n"; |
&javascript_checkpass($now,'email'); |
$gotlondes = 1; |
|
} |
|
} |
|
if ($gotlondes) { |
|
$output .= &javascript_checkpass($now,'email'); |
|
my ($lkey,$ukey) = &Apache::loncommon::des_keys(); |
my ($lkey,$ukey) = &Apache::loncommon::des_keys(); |
my ($lextkey,$uextkey) = &getkeys($lkey,$ukey); |
my ($lextkey,$uextkey) = &getkeys($lkey,$ukey); |
my $logtoken=Apache::lonnet::reply('tmpput:'.$ukey.$lkey.'&createaccount:createaccount', |
my $logtoken=Apache::lonnet::reply('tmpput:'.$ukey.$lkey.'&createaccount:createaccount', |
Line 975 sub get_creation_controls {
|
Line 997 sub get_creation_controls {
|
if (ref($usercreation->{'cancreate'}{'emailusername'}) eq 'HASH') { |
if (ref($usercreation->{'cancreate'}{'emailusername'}) eq 'HASH') { |
$emailusername = $usercreation->{'cancreate'}{'emailusername'}; |
$emailusername = $usercreation->{'cancreate'}{'emailusername'}; |
} else { |
} else { |
$emailusername = {'lastname' => '1', 'firstname' => 1, }; |
$emailusername = { |
|
default => { |
|
'lastname' => '1', |
|
'firstname' => 1, |
|
}, |
|
}; |
} |
} |
} |
} |
} |
} |
Line 1164 sub login_failure_msg {
|
Line 1191 sub login_failure_msg {
|
|
|
sub username_check { |
sub username_check { |
my ($username,$domain,$domdesc,$courseid,$lonhost,$contact_email, |
my ($username,$domain,$domdesc,$courseid,$lonhost,$contact_email, |
$contact_name,$sso_logout,$statustocreate) = @_; |
$contact_name,$sso_logout,$statustocreate,$shibenv) = @_; |
my (%rulematch,%inst_results,$checkfail,$rowcount,$editable,$output,$msg, |
my (%rulematch,%inst_results,$checkfail,$rowcount,$editable,$output,$msg, |
%alerts,%curr_rules,%got_rules); |
%alerts,%curr_rules,%got_rules); |
&call_rulecheck($username,$domain,\%alerts,\%rulematch, |
&call_rulecheck($username,$domain,\%alerts,\%rulematch, |
Line 1200 sub username_check {
|
Line 1227 sub username_check {
|
} |
} |
if (!$checkfail) { |
if (!$checkfail) { |
$output = '<form method="post" action="/adm/createaccount">'; |
$output = '<form method="post" action="/adm/createaccount">'; |
|
if (ref($shibenv) eq 'HASH') { |
|
foreach my $key (keys(%{$shibenv})) { |
|
if ($ENV{$shibenv->{$key}} ne '') { |
|
$inst_results{$username.':'.$domain}{$key} = $ENV{$shibenv->{$key}}; |
|
} |
|
} |
|
} |
(my $datatable,$rowcount,$editable) = |
(my $datatable,$rowcount,$editable) = |
&Apache::loncreateuser::personal_data_display($username,$domain,1,'selfcreate', |
&Apache::loncreateuser::personal_data_display($username,$domain,1,'selfcreate', |
$inst_results{$username.':'.$domain}); |
$inst_results{$username.':'.$domain}); |