version 1.59, 2014/02/19 17:20:32
|
version 1.72.4.1, 2018/09/11 18:55:57
|
Line 59 sub handler {
|
Line 59 sub handler {
|
my $sso_domain = $r->subprocess_env->get('SSOUserDomain'); |
my $sso_domain = $r->subprocess_env->get('SSOUserDomain'); |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['token','courseid','domain']); |
['token','courseid','domain','type']); |
&Apache::lonacc::get_posted_cgi($r); |
&Apache::lonacc::get_posted_cgi($r); |
&Apache::lonlocal::get_language_handle($r); |
&Apache::lonlocal::get_language_handle($r); |
|
|
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 187 sub handler {
|
Line 215 sub handler {
|
my ($output,$nostart,$noend,$redirect); |
my ($output,$nostart,$noend,$redirect); |
my $token = $env{'form.token'}; |
my $token = $env{'form.token'}; |
if ($token) { |
if ($token) { |
|
my $usertype = &get_usertype($domain); |
($output,$nostart,$noend,$redirect) = |
($output,$nostart,$noend,$redirect) = |
&process_mailtoken($r,$token,$contact_name,$contact_email,$domain, |
&process_mailtoken($r,$token,$contact_name,$contact_email,$domain, |
$domdesc,$lonhost,$include,$start_page,$cancreate, |
$domdesc,$lonhost,$include,$start_page,$cancreate, |
$domconfig{'usercreation'}); |
$domconfig{'usercreation'},$usertype); |
if ($redirect) { |
if ($redirect) { |
$r->internal_redirect('/adm/switchserver'); |
$r->internal_redirect('/adm/switchserver'); |
return OK; |
return OK; |
Line 240 sub handler {
|
Line 269 sub handler {
|
} |
} |
} elsif ($env{'form.create_with_email'}) { |
} elsif ($env{'form.create_with_email'}) { |
&print_header($r,$start_page,$courseid); |
&print_header($r,$start_page,$courseid); |
|
my $usertype = &get_usertype($domain); |
$output = &process_email_request($env{'form.uname'},$domain,$domdesc, |
$output = &process_email_request($env{'form.uname'},$domain,$domdesc, |
$contact_name,$contact_email,$cancreate, |
$contact_name,$contact_email,$cancreate, |
$lonhost,$domconfig{'usercreation'}, |
$lonhost,$domconfig{'usercreation'}, |
$emailusername,$courseid); |
$emailusername,$courseid,$usertype); |
} 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(|approval)$/,@{$cancreate})) { |
if (grep(/^email$/,@{$cancreate})) { |
$r->print(&javascript_validmail()); |
$r->print(&javascript_validmail()); |
} |
} |
|
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); |
} |
} |
$r->print($output); |
$r->print($output); |
&print_footer($r); |
&print_footer($r); |
Line 290 sub print_footer {
|
Line 319 sub print_footer {
|
$r->print('<form name="backupcrumbs" method="post" action="">'. |
$r->print('<form name="backupcrumbs" method="post" action="">'. |
&Apache::lonhtmlcommon::echo_form_input(['backto','logtoken', |
&Apache::lonhtmlcommon::echo_form_input(['backto','logtoken', |
'token','serverid','uname','upass','phase','create_with_email', |
'token','serverid','uname','upass','phase','create_with_email', |
'code','crypt','cfirstname','clastname', |
'code','crypt','cfirstname','clastname','g-recaptcha-response', |
'recaptcha_challenge_field','recaptcha_response_field', |
'recaptcha_challenge_field','recaptcha_response_field', |
'cmiddlename','cgeneration','cpermanentemail','cid']). |
'cmiddlename','cgeneration','cpermanentemail','cid']). |
'</form>'); |
'</form>'); |
Line 298 sub print_footer {
|
Line 327 sub print_footer {
|
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
|
sub get_usertype { |
|
my ($domain) = @_; |
|
my $usertype = 'default'; |
|
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($domain); |
|
if (ref($types) eq 'ARRAY') { |
|
push(@{$types},'default'); |
|
my $posstype = $env{'form.type'}; |
|
$posstype =~ s/^\s+|\s$//g; |
|
if (grep(/^\Q$posstype\E$/,@{$types})) { |
|
$usertype = $posstype; |
|
} |
|
} |
|
return $usertype; |
|
} |
|
|
sub selfenroll_crumbs { |
sub selfenroll_crumbs { |
my ($r,$courseid,$desc) = @_; |
my ($r,$courseid,$desc) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
Line 310 sub selfenroll_crumbs {
|
Line 354 sub selfenroll_crumbs {
|
} |
} |
my $last_crumb; |
my $last_crumb; |
if ($desc ne '') { |
if ($desc ne '') { |
$last_crumb = &mt('Self-enroll in [_1]',"<span class='LC_cusr_emph'>$desc</span>"); |
$last_crumb = &mt("Self-enroll in [_1]","'$desc'"); |
} else { |
} else { |
$last_crumb = &mt('Self-enroll'); |
$last_crumb = &mt('Self-enroll'); |
} |
} |
Line 322 sub selfenroll_crumbs {
|
Line 366 sub selfenroll_crumbs {
|
} |
} |
|
|
sub javascript_setforms { |
sub javascript_setforms { |
my ($now,$emailusername,$captcha) = @_; |
my ($now,$emailusername,$captcha,$usertype,$recaptchaversion) = @_; |
my $setuserinfo; |
my ($setuserinfo,@required,$requiredchk); |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $key (sort(keys(%{$emailusername}))) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
$setuserinfo .= ' server.elements.'.$key.'.value=client.elements.'.$key.'.value;'."\n"; |
foreach my $key (sort(keys(%{$emailusername->{$usertype}}))) { |
|
if ($emailusername->{$usertype}{$key} eq 'required') { |
|
push(@required,$key); |
|
} |
|
$setuserinfo .= ' server.elements.'.$key.'.value=client.elements.'.$key.'.value;'."\n"; |
|
} |
|
$setuserinfo .= ' server.elements.type.value=client.elements.type.value;'."\n"; |
} |
} |
if ($captcha eq 'original') { |
if ($captcha eq 'original') { |
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". |
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". |
' server.elements.crypt.value=client.elements.crypt.value;'."\n"; |
' server.elements.crypt.value=client.elements.crypt.value;'."\n"; |
} elsif ($captcha eq 'recaptcha') { |
} elsif ($captcha eq 'recaptcha') { |
$setuserinfo .= ' server.elements.recaptcha_challenge_field.value=client.elements.recaptcha_challenge_field.value;'."\n". |
if ($recaptchaversion ne '2') { |
' server.elements.recaptcha_response_field.value=client.elements.recaptcha_response_field.value;'."\n"; |
$setuserinfo .= |
|
' server.elements.recaptcha_challenge_field.value=client.elements.recaptcha_challenge_field.value;'."\n". |
|
' server.elements.recaptcha_response_field.value=client.elements.recaptcha_response_field.value;'."\n"; |
|
} |
} |
} |
} |
} |
|
if (@required) { |
|
my $missprompt = &mt('One or more required fields are currently blank.'); |
|
&js_escape(\$missprompt); |
|
my $reqstr = join("','",@required); |
|
$requiredchk = <<"ENDCHK"; |
|
var requiredfields = new Array('$reqstr'); |
|
missing = 0; |
|
for (var i=0; i<requiredfields.length; i++) { |
|
try { |
|
eval("client.elements."+requiredfields[i]+".value"); |
|
} |
|
catch(err) { |
|
continue; |
|
} |
|
if (eval("client.elements."+requiredfields[i]+".value") == '') { |
|
missing ++; |
|
} |
|
} |
|
if (missing > 0) { |
|
alert("$missprompt"); |
|
return false; |
|
} |
|
|
|
ENDCHK |
|
} |
my $js = <<ENDSCRIPT; |
my $js = <<ENDSCRIPT; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
Line 346 sub javascript_setforms {
|
Line 424 sub javascript_setforms {
|
server = document.forms[one]; |
server = document.forms[one]; |
if (document.forms[two]) { |
if (document.forms[two]) { |
client = document.forms[two]; |
client = document.forms[two]; |
|
$requiredchk |
server.elements.uname.value = client.elements.uname.value; |
server.elements.uname.value = client.elements.uname.value; |
server.elements.udom.value = client.elements.udom.value; |
server.elements.udom.value = client.elements.udom.value; |
if (context == 'email') { |
|
$setuserinfo |
|
} |
|
|
|
uextkey=client.elements.uextkey.value; |
uextkey=client.elements.uextkey.value; |
lextkey=client.elements.lextkey.value; |
lextkey=client.elements.lextkey.value; |
initkeys(); |
initkeys(); |
|
|
server.elements.upass.value |
server.elements.upass.value |
= crypted(client.elements.upass$now.value); |
= getCrypted(client.elements.upass$now.value); |
|
|
client.elements.uname.value=''; |
client.elements.uname.value=''; |
client.elements.upass$now.value=''; |
client.elements.upass$now.value=''; |
client.elements.upasscheck$now.value=''; |
if (context == 'email') { |
|
$setuserinfo |
|
client.elements.upasscheck$now.value=''; |
|
} |
server.submit(); |
server.submit(); |
} |
} |
} |
} |
return false; |
return false; |
} |
} |
|
|
// ]]> |
// ]]> |
</script> |
</script> |
ENDSCRIPT |
ENDSCRIPT |
|
if (($captcha eq 'recaptcha') && ($recaptchaversion eq '2')) { |
|
$js .= "\n".'<script src="https://www.google.com/recaptcha/api.js"></script>'."\n"; |
|
} |
return $js; |
return $js; |
} |
} |
|
|
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 411 ENDSCRIPT
|
Line 496 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 433 ENDSCRIPT
|
Line 519 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) = @_; |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
unam => 'username', |
unam => 'username', |
udom => 'domain', |
udom => 'domain', |
Line 460 sub print_username_form {
|
Line 547 sub print_username_form {
|
$domain,'createaccount').'</div>'; |
$domain,'createaccount').'</div>'; |
} |
} |
} |
} |
if (grep(/^email(|approval)$/,@{$cancreate})) { |
if (grep(/^email$/,@{$cancreate})) { |
$output .= '<div class="LC_left_float"><h3>'.&mt('Create account with an e-mail address as your username').'</h3>'; |
$output .= '<div class="LC_left_float"><h3>'.&mt('Create account with an e-mail address as your username').'</h3>'; |
my ($captchaform,$error,$captcha) = &Apache::loncommon::captcha_display('usercreation',$lonhost); |
my ($captchaform,$error,$captcha,$recaptchaversion) = |
|
&Apache::loncommon::captcha_display('usercreation',$lonhost); |
if ($error) { |
if ($error) { |
my $helpdesk = '/adm/helpdesk?origurl=%2fadm%2fcreateaccount'; |
my $helpdesk = '/adm/helpdesk?origurl=%2fadm%2fcreateaccount'; |
if ($courseid ne '') { |
if ($courseid ne '') { |
Line 481 sub print_username_form {
|
Line 569 sub print_username_form {
|
} else { |
} else { |
my $prompt = $lt{'plse'}; |
my $prompt = $lt{'plse'}; |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $key (keys(%{$emailusername})) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
if ($emailusername->{$key}) { |
if (keys(%{$emailusername->{$usertype}}) > 0) { |
$prompt = $lt{'info'}; |
$prompt = $lt{'info'}; |
last; |
|
} |
} |
} |
} |
} |
} |
Line 492 sub print_username_form {
|
Line 579 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, |
|
$recaptchaversion); |
} |
} |
$output .= '</div>'; |
$output .= '</div>'; |
} |
} |
Line 558 sub login_box {
|
Line 646 sub login_box {
|
|
|
sub process_email_request { |
sub process_email_request { |
my ($useremail,$domain,$domdesc,$contact_name,$contact_email,$cancreate, |
my ($useremail,$domain,$domdesc,$contact_name,$contact_email,$cancreate, |
$server,$settings,$emailusername,$courseid) = @_; |
$server,$settings,$emailusername,$courseid,$usertype) = @_; |
my $output; |
my $output; |
if (ref($cancreate) eq 'ARRAY') { |
if (ref($cancreate) eq 'ARRAY') { |
if (!grep(/^email(|approval)$/,@{$cancreate})) { |
if (!grep(/^email$/,@{$cancreate})) { |
$output = &invalid_state('noemails',$domdesc, |
$output = &invalid_state('noemails',$domdesc, |
$contact_name,$contact_email); |
$contact_name,$contact_email); |
return $output; |
return $output; |
Line 612 sub process_email_request {
|
Line 700 sub process_email_request {
|
} |
} |
} |
} |
$output = &send_token($domain,$useremail,$server,$domdesc,$contact_name, |
$output = &send_token($domain,$useremail,$server,$domdesc,$contact_name, |
$contact_email,$courseid,$emailusername); |
$contact_email,$courseid,$emailusername,$usertype); |
} |
} |
return $output; |
return $output; |
} |
} |
Line 632 sub call_rulecheck {
|
Line 720 sub call_rulecheck {
|
} |
} |
|
|
sub send_token { |
sub send_token { |
my ($domain,$email,$server,$domdesc,$contact_name,$contact_email,$courseid,$emailusername) = @_; |
my ($domain,$email,$server,$domdesc,$contact_name,$contact_email,$courseid,$emailusername, |
|
$usertype) = @_; |
my $msg = '<h3>'.&mt('Account creation status').'</h3>'. |
my $msg = '<h3>'.&mt('Account creation status').'</h3>'. |
&mt('Thank you for your request to create a new LON-CAPA account.'). |
&mt('Thank you for your request to create a new LON-CAPA account.'). |
'<br /><br />'; |
'<br /><br />'; |
Line 660 sub send_token {
|
Line 749 sub send_token {
|
'tmpinfo' => $tmpinfo); |
'tmpinfo' => $tmpinfo); |
|
|
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $item (keys(%{$emailusername})) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
$info{$item} = $env{'form.'.$item}; |
foreach my $item (keys(%{$emailusername->{$usertype}})) { |
$info{$item} =~ s/(`)//g; |
$info{$item} = $env{'form.'.$item}; |
|
$info{$item} =~ s/(`)//g; |
|
} |
|
unless ($usertype eq 'default') { |
|
$info{'inststatus'} = $usertype; |
|
} |
} |
} |
} |
} |
my $token = &Apache::lonnet::tmpput(\%info,$server,'createaccount'); |
my $token = &Apache::lonnet::tmpput(\%info,$server,'createaccount'); |
Line 698 sub send_token {
|
Line 792 sub send_token {
|
|
|
sub process_mailtoken { |
sub process_mailtoken { |
my ($r,$token,$contact_name,$contact_email,$domain,$domdesc,$lonhost, |
my ($r,$token,$contact_name,$contact_email,$domain,$domdesc,$lonhost, |
$include,$start_page,$cancreate,$settings) = @_; |
$include,$start_page,$cancreate,$settings,$usertype) = @_; |
my ($msg,$nostart,$noend,$redirect); |
my ($msg,$nostart,$noend,$redirect); |
my %data = &Apache::lonnet::tmpget($token); |
my %data = &Apache::lonnet::tmpget($token); |
my $now = time; |
my $now = time; |
Line 715 sub process_mailtoken {
|
Line 809 sub process_mailtoken {
|
if ($now - $data{'time'} < 7200) { |
if ($now - $data{'time'} < 7200) { |
# Check if request should be queued. |
# Check if request should be queued. |
if (ref($cancreate) eq 'ARRAY') { |
if (ref($cancreate) eq 'ARRAY') { |
|
my $disposition; |
if (grep(/^email$/,@{$cancreate})) { |
if (grep(/^email$/,@{$cancreate})) { |
my ($result,$output,$uhome) = |
if (ref($settings) eq 'HASH') { |
&create_account($r,$domain,$domdesc,\%data); |
if (ref($settings->{'cancreate'}) eq 'HASH') { |
if ($result eq 'ok') { |
if (ref($settings->{'cancreate'}{'selfcreateprocessing'}) eq 'HASH') { |
$msg = $output; |
$disposition = $settings->{'cancreate'}{'selfcreateprocessing'}{$usertype}; |
my $shownow = &Apache::lonlocal::locallocaltime($now); |
} |
my $mailmsg = &mt('A LON-CAPA account for the institution: [_1] has been created [_2] from IP address: [_3]. If you did not perform this action or authorize it, please contact the [_4] ([_5]).',$domdesc,$shownow,$ENV{'REMOTE_ADDR'},$contact_name,$contact_email)."\n"; |
|
my $mailresult = &Apache::resetpw::send_mail($domdesc,$data{'email'}, |
|
$mailmsg,$contact_name, |
|
$contact_email); |
|
if ($mailresult eq 'ok') { |
|
$msg .= &mt('An e-mail confirming creation of your new LON-CAPA account has been sent to [_1].',$data{'username'}); |
|
} else { |
|
$msg .= &mt('An error occurred when sending e-mail to [_1] confirming creation of your LON-CAPA account.',$data{'username'}); |
|
} |
} |
$redirect = &start_session($r,$data{'username'},$domain,$uhome, |
} |
$data{'courseid'},$token); |
if ($disposition eq 'approval') { |
$nostart = 1; |
$msg = &store_request($domain,$data{'username'},'approval',\%data,$settings); |
$noend = 1; |
my $delete = &Apache::lonnet::tmpdel($token); |
} else { |
} else { |
$msg .= &mt('A problem occurred when attempting to create your new LON-CAPA account.') |
my ($result,$output,$uhome) = |
.'<br />'.$output; |
&create_account($r,$domain,$domdesc,\%data); |
if (($contact_name ne '') && ($contact_email ne '')) { |
if ($result eq 'ok') { |
$msg .= &mt('Please contact the [_1] ([_2]) for assistance.',$contact_name,$contact_email); |
$msg = $output; |
|
my $shownow = &Apache::lonlocal::locallocaltime($now); |
|
my $mailmsg = &mt('A LON-CAPA account for the institution: [_1] has been created [_2] from IP address: [_3]. If you did not perform this action or authorize it, please contact the [_4] ([_5]).',$domdesc,$shownow,$ENV{'REMOTE_ADDR'},$contact_name,$contact_email)."\n"; |
|
my $mailresult = &Apache::resetpw::send_mail($domdesc,$data{'email'}, |
|
$mailmsg,$contact_name, |
|
$contact_email); |
|
if ($mailresult eq 'ok') { |
|
$msg .= &mt('An e-mail confirming creation of your new LON-CAPA account has been sent to [_1].',$data{'username'}); |
|
} else { |
|
$msg .= &mt('An error occurred when sending e-mail to [_1] confirming creation of your LON-CAPA account.',$data{'username'}); |
|
} |
|
$redirect = &start_session($r,$data{'username'},$domain,$uhome, |
|
$data{'courseid'},$token); |
|
$nostart = 1; |
|
$noend = 1; |
|
} else { |
|
$msg .= &mt('A problem occurred when attempting to create your new LON-CAPA account.') |
|
.'<br />'.$output; |
|
if (($contact_name ne '') && ($contact_email ne '')) { |
|
$msg .= &mt('Please contact the [_1] ([_2]) for assistance.',$contact_name,$contact_email); |
|
} |
} |
} |
|
my $delete = &Apache::lonnet::tmpdel($token); |
} |
} |
my $delete = &Apache::lonnet::tmpdel($token); |
|
} elsif (grep(/^emailapproval$/,@{$cancreate})) { |
|
$msg = &store_request($domain,$data{'username'},'approval',\%data,$settings); |
|
my $delete = &Apache::lonnet::tmpdel($token); |
|
} else { |
} else { |
$msg = &invalid_state('noemails',$domdesc,$contact_name,$contact_email); |
$msg = &invalid_state('noemails',$domdesc,$contact_name,$contact_email); |
} |
} |
Line 764 sub process_mailtoken {
|
Line 868 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 779 sub start_session {
|
Line 883 sub start_session {
|
($courseid ? "/adm/selfenroll?courseid=$courseid" : '/adm/roles'), |
($courseid ? "/adm/selfenroll?courseid=$courseid" : '/adm/roles'), |
undef, {}); |
undef, {}); |
} |
} |
|
|
return; |
return; |
} |
} |
|
|
Line 789 sub start_session {
|
Line 892 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,$recaptchaversion) = @_; |
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,$recaptchaversion). |
$output = &javascript_setforms($now,$emailusername,$captcha)."\n"; |
"\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 813 sub print_dataentry_form {
|
Line 912 sub print_dataentry_form {
|
$output .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
$output .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
} |
} |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $field (sort(keys(%{$emailusername}))) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
$output .= '<input type="hidden" name="'.$field.'" value="" />'."\n"; |
foreach my $field (sort(keys(%{$emailusername->{$usertype}}))) { |
|
$output .= '<input type="hidden" name="'.$field.'" value="" />'."\n"; |
|
} |
|
$output .= '<input type="hidden" name="type" value="" />'."\n"; |
} |
} |
} |
} |
if ($captcha eq 'original') { |
if ($captcha eq 'original') { |
Line 823 sub print_dataentry_form {
|
Line 925 sub print_dataentry_form {
|
<input type="hidden" name="code" value="" /> |
<input type="hidden" name="code" value="" /> |
'; |
'; |
} elsif ($captcha eq 'recaptcha') { |
} elsif ($captcha eq 'recaptcha') { |
$output .= ' |
if ($recaptchaversion eq '2') { |
|
$output .= "$captchaform\n"; |
|
undef($captchaform); |
|
} else { |
|
$output .= ' |
<input type="hidden" name="recaptcha_challenge_field" value="" /> |
<input type="hidden" name="recaptcha_challenge_field" value="" /> |
<input type="hidden" name="recaptcha_response_field" value="" /> |
<input type="hidden" name="recaptcha_response_field" value="" /> |
'; |
'; |
|
} |
} |
} |
$output .= <<"ENDSERVERFORM"; |
$output .= <<"ENDSERVERFORM"; |
<input type="hidden" name="logtoken" value="$logtoken" /> |
<input type="hidden" name="logtoken" value="$logtoken" /> |
Line 843 ENDSERVERFORM
|
Line 950 ENDSERVERFORM
|
my $endclientform = '<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
my $endclientform = '<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
'<input type="hidden" name="lextkey" value="'.$lextkey.'" />'."\n". |
'<input type="hidden" name="lextkey" value="'.$lextkey.'" />'."\n". |
'<input type="hidden" name="uextkey" value="'.$uextkey.'" />'."\n". |
'<input type="hidden" name="uextkey" value="'.$uextkey.'" />'."\n". |
'</form>'; |
'</form>'."\n". |
|
'<p class="LC_info">'.&mt('Fields marked [_1]*[_2] are required.','<b>','</b>').'</p>'; |
my ($datatable,$rowcount) = |
my ($datatable,$rowcount) = |
&Apache::loncreateuser::personal_data_display('',$domain,'email','selfcreate', |
&Apache::loncreateuser::personal_data_display('',$domain,'email','selfcreate', |
'','',$now,$captchaform, |
'','',$now,$captchaform, |
$emailusername); |
$emailusername,$usertype); |
if ($rowcount) { |
if ($rowcount) { |
$output .= '<div class="LC_left_float">'.$beginclientform.$datatable.$endclientform; |
$output .= '<div class="LC_left_float">'.$beginclientform.$datatable.$endclientform; |
} else { |
} else { |
Line 902 sub get_creation_controls {
|
Line 1010 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 919 sub create_account {
|
Line 1032 sub create_account {
|
my $output; |
my $output; |
if (ref($dataref) eq 'HASH') { |
if (ref($dataref) eq 'HASH') { |
my ($username,$encpass,$serverid,$courseid,$id,$firstname,$middlename,$lastname, |
my ($username,$encpass,$serverid,$courseid,$id,$firstname,$middlename,$lastname, |
$generation); |
$generation,$inststatus); |
$username = $dataref->{'username'}; |
$username = $dataref->{'username'}; |
$encpass = $dataref->{'upass'}; |
$encpass = $dataref->{'upass'}; |
$serverid = $dataref->{'serverid'}; |
$serverid = $dataref->{'serverid'}; |
Line 929 sub create_account {
|
Line 1042 sub create_account {
|
$middlename = $dataref->{'middlename'}; |
$middlename = $dataref->{'middlename'}; |
$lastname = $dataref->{'lastname'}; |
$lastname = $dataref->{'lastname'}; |
$generation = $dataref->{'generation'}; |
$generation = $dataref->{'generation'}; |
|
$inststatus = $dataref->{'inststatus'}; |
|
|
my $currhome = &Apache::lonnet::homeserver($username,$domain); |
my $currhome = &Apache::lonnet::homeserver($username,$domain); |
unless ($currhome eq 'no_host') { |
unless ($currhome eq 'no_host') { |
$output = &mt('User account requested for username: [_1] in domain: [_2] already exists.',$username,$domain); |
$output = &mt('User account requested for username: [_1] in domain: [_2] already exists.',$username,$domain); |
Line 967 sub create_account {
|
Line 1081 sub create_account {
|
# Now that the user account exists, retrieve the homeserver, and include it in the output. |
# Now that the user account exists, retrieve the homeserver, and include it in the output. |
|
|
my $uhome = &Apache::lonnet::homeserver($username,$domain); |
my $uhome = &Apache::lonnet::homeserver($username,$domain); |
|
unless (($inststatus eq 'default') || ($inststatus eq '')) { |
|
&Apache::lonnet::put('environment',{inststatus => $inststatus},$domain,$username); |
|
} |
$output .= '<br />'.&mt('Home server: [_1]',$uhome).' '. |
$output .= '<br />'.&mt('Home server: [_1]',$uhome).' '. |
&Apache::lonnet::hostname($uhome).'<br /><br />'; |
&Apache::lonnet::hostname($uhome).'<br /><br />'; |
return ('ok',$output,$uhome); |
return ('ok',$output,$uhome); |
Line 1087 sub login_failure_msg {
|
Line 1204 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 1123 sub username_check {
|
Line 1240 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}); |
Line 1513 sub sso_logout_frag {
|
Line 1637 sub sso_logout_frag {
|
if (defined($r->dir_config('lonSSOUserLogoutMessageFile_'.$domain))) { |
if (defined($r->dir_config('lonSSOUserLogoutMessageFile_'.$domain))) { |
my $msgfile = $r->dir_config('lonSSOUserLogoutMessageFile_'.$domain); |
my $msgfile = $r->dir_config('lonSSOUserLogoutMessageFile_'.$domain); |
if (-e $msgfile) { |
if (-e $msgfile) { |
open(my $fh,"<$msgfile"); |
open(my $fh,"<",$msgfile); |
$endsessionmsg = join('',<$fh>); |
$endsessionmsg = join('',<$fh>); |
close($fh); |
close($fh); |
} |
} |
} elsif (defined($r->dir_config('lonSSOUserLogoutMessageFile'))) { |
} elsif (defined($r->dir_config('lonSSOUserLogoutMessageFile'))) { |
my $msgfile = $r->dir_config('lonSSOUserLogoutMessageFile'); |
my $msgfile = $r->dir_config('lonSSOUserLogoutMessageFile'); |
if (-e $msgfile) { |
if (-e $msgfile) { |
open(my $fh,"<$msgfile"); |
open(my $fh,"<",$msgfile); |
$endsessionmsg = join('',<$fh>); |
$endsessionmsg = join('',<$fh>); |
close($fh); |
close($fh); |
} |
} |
Line 1531 sub sso_logout_frag {
|
Line 1655 sub sso_logout_frag {
|
sub catreturn_js { |
sub catreturn_js { |
return <<"ENDSCRIPT"; |
return <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function ToSelfenroll(formname) { |
function ToSelfenroll(formname) { |
var formidx = getFormByName(formname); |
var formidx = getFormByName(formname); |
if (formidx > -1) { |
if (formidx > -1) { |
Line 1579 function getFormByName(item) {
|
Line 1703 function getFormByName(item) {
|
} |
} |
return -1; |
return -1; |
} |
} |
|
// ]]> |
</script> |
</script> |
ENDSCRIPT |
ENDSCRIPT |
|
|