version 1.58, 2014/02/12 20:47:40
|
version 1.67, 2014/05/30 16:46:03
|
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; |
Line 258 sub handler {
|
Line 288 sub handler {
|
$gotlondes = 1; |
$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,$gotlondes,$emailusername, |
|
$usertype); |
} |
} |
$r->print($output); |
$r->print($output); |
&print_footer($r); |
&print_footer($r); |
Line 291 sub print_footer {
|
Line 323 sub print_footer {
|
&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', |
|
'recaptcha_challenge_field','recaptcha_response_field', |
'cmiddlename','cgeneration','cpermanentemail','cid']). |
'cmiddlename','cgeneration','cpermanentemail','cid']). |
'</form>'); |
'</form>'); |
} |
} |
$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 309 sub selfenroll_crumbs {
|
Line 357 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 321 sub selfenroll_crumbs {
|
Line 369 sub selfenroll_crumbs {
|
} |
} |
|
|
sub javascript_setforms { |
sub javascript_setforms { |
my ($now,$emailusername) = @_; |
my ($now,$emailusername,$captcha,$usertype) = @_; |
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') { |
|
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". |
|
' server.elements.crypt.value=client.elements.crypt.value;'."\n"; |
|
} elsif ($captcha eq 'recaptcha') { |
|
$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.'); |
|
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"> |
Line 338 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 |
|
} |
|
server.elements.code.value=client.elements.code.value; |
|
server.elements.crypt.value=client.elements.crypt.value; |
|
|
|
uextkey=client.elements.uextkey.value; |
uextkey=client.elements.uextkey.value; |
lextkey=client.elements.lextkey.value; |
lextkey=client.elements.lextkey.value; |
Line 355 sub javascript_setforms {
|
Line 437 sub javascript_setforms {
|
|
|
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(); |
} |
} |
} |
} |
Line 427 ENDSCRIPT
|
Line 512 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,$gotlondes,$emailusername, |
my %lt = &Apache::lonlocal::texthash( |
$usertype) = @_; |
|
my %lt = &Apache::lonlocal::texthash ( |
unam => 'username', |
unam => 'username', |
udom => 'domain', |
udom => 'domain', |
uemail => 'E-mail address in LON-CAPA', |
uemail => 'E-mail address in LON-CAPA', |
proc => 'Proceed'); |
proc => 'Proceed', |
|
crac => 'Create account with a username provided by this institution', |
|
clca => 'Create LON-CAPA account', |
|
type => 'Type in your log-in ID and password to find out.', |
|
plse => 'Please provide a password for your new account.', |
|
info => 'Please provide user information and a password for your new account.', |
|
yopw => 'Your password will be encrypted when sent (and stored).', |
|
); |
my $output; |
my $output; |
if (ref($cancreate) eq 'ARRAY') { |
if (ref($cancreate) eq 'ARRAY') { |
if (grep(/^login$/,@{$cancreate})) { |
if (grep(/^login$/,@{$cancreate})) { |
my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); |
if ((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || ($domdefaults{'auth_def'} eq 'localauth')) { |
if ((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || ($domdefaults{'auth_def'} eq 'localauth')) { |
$output = '<div class="LC_left_float"><h3>'.&mt('Create account with a username provided by this institution').'</h3>'; |
$output = '<div class="LC_left_float"><h3>'.$lt{'crac'}.'</h3>'; |
my $submit_text = &mt('Create LON-CAPA account'); |
$output .= &mt('If you already have a log-in ID at this institution [_1]you may be able to use it for LON-CAPA.','<br />'). |
$output .= &mt('If you already have a log-in ID at this institution,[_1] you may be able to use it for LON-CAPA.','<br />'). |
|
'<br /><br />'. |
'<br /><br />'. |
&mt('Type in your log-in ID and password to find out.'). |
$lt{'type'}. |
'<br /><br />'; |
'<br /><br />'; |
$output .= &login_box($now,$lonhost,$courseid,$submit_text, |
$output .= &login_box($now,$lonhost,$courseid,$lt{'clca'}, |
$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) = &Apache::loncommon::captcha_display('usercreation',$lonhost); |
my ($captchaform,$error,$captcha) = &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 463 sub print_username_form {
|
Line 555 sub print_username_form {
|
'<a href="'.$helpdesk.'">','</a>','<a href="javascript:window.location.reload()">'); |
'<a href="'.$helpdesk.'">','</a>','<a href="javascript:window.location.reload()">'); |
} else { |
} else { |
if (grep(/^login$/,@{$cancreate})) { |
if (grep(/^login$/,@{$cancreate})) { |
$output .= &mt('Provide your e-mail address to request a LON-CAPA account,[_1] if you do not have a log-in ID at your institution.','<br />').'<br /><br />'; |
$output .= &mt('If you do not have a log-in ID at your institution, [_1]provide your e-mail address to request a LON-CAPA account.','<br />').'<br /><br />'. |
} else { |
$lt{'plse'}.'<br />'. |
$output .= '<br />'; |
$lt{'yopw'}.'<br />'; |
} |
|
$output .= &mt('Please provide user information and a password for your new account.').'<br />'. |
|
&mt('Your password, which must contain at least seven characters, will be sent to the LON-CAPA server in an encrypted form.').'<br />'; |
|
if (grep(/^login$/,@{$cancreate})) { |
|
$output .= &mt('Provide your e-mail address to request a LON-CAPA account,[_1] if you do not have a log-in ID at your institution.','<br />').'<br /><br />'; |
|
} else { |
|
$output .= '<br />'; |
|
} |
|
$output .= &print_dataentry_form($r,$domain,$lonhost,$include,$now,$captchaform,$courseid,$gotlondes,$emailusername); |
|
if (grep(/^login$/,@{$cancreate})) { |
|
$output .= &mt('Provide your e-mail address to request a LON-CAPA account,[_1] if you do not have a log-in ID at your institution.','<br />').'<br /><br />'; |
|
} else { |
} else { |
$output .= '<br />'; |
my $prompt = $lt{'plse'}; |
|
if (ref($emailusername) eq 'HASH') { |
|
if (ref($emailusername->{$usertype}) eq 'HASH') { |
|
if (keys(%{$emailusername->{$usertype}}) > 0) { |
|
$prompt = $lt{'info'}; |
|
} |
|
} |
|
} |
|
$output .= $prompt.'<br />'. |
|
$lt{'yopw'}.'<br />'; |
} |
} |
|
$output .= &print_dataentry_form($r,$domain,$lonhost,$include,$now,$captchaform, |
|
$courseid,$gotlondes,$emailusername,$captcha, |
|
$usertype); |
} |
} |
$output .= '</div>'; |
$output .= '</div>'; |
} |
} |
Line 504 sub login_box {
|
Line 597 sub login_box {
|
my $logtoken=Apache::lonnet::reply('tmpput:'.$ukey.$lkey.'&createaccount:createaccount', |
my $logtoken=Apache::lonnet::reply('tmpput:'.$ukey.$lkey.'&createaccount:createaccount', |
$lonhost); |
$lonhost); |
$output = &serverform($logtoken,$lonhost,undef,$courseid,$context); |
$output = &serverform($logtoken,$lonhost,undef,$courseid,$context); |
my $unameform = '<input type="text" name="uname" size="20" value="" />'; |
my $unameform = '<input type="text" name="uname" size="20" value="" autocomplete="off" />'; |
my $upassform = '<input type="password" name="upass'.$now.'" size="20" />'; |
my $upassform = '<input type="password" name="upass'.$now.'" size="20" autocomplete="off" />'; |
$output .= '<form name="client" method="post" action="" onsubmit="return(send('."'server','client'".'));">'."\n". |
$output .= '<form name="client" method="post" action="" onsubmit="return(send('."'server','client'".'));">'."\n". |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
&Apache::lonhtmlcommon::row_title($titles{$context}, |
&Apache::lonhtmlcommon::row_title($titles{$context}, |
Line 545 sub login_box {
|
Line 638 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 599 sub process_email_request {
|
Line 692 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 619 sub call_rulecheck {
|
Line 712 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 647 sub send_token {
|
Line 741 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 685 sub send_token {
|
Line 784 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 702 sub process_mailtoken {
|
Line 801 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 776 sub start_session {
|
Line 885 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) = @_; |
my ($r,$domain,$lonhost,$include,$now,$captchaform,$courseid,$gotlondes,$emailusername,$captcha, |
|
$usertype) = @_; |
my ($error,$output); |
my ($error,$output); |
unless ($gotlondes) { |
unless ($gotlondes) { |
if (open(my $jsh,"<$include/londes.js")) { |
if (open(my $jsh,"<$include/londes.js")) { |
Line 784 sub print_dataentry_form {
|
Line 894 sub print_dataentry_form {
|
$r->print($line); |
$r->print($line); |
} |
} |
close($jsh); |
close($jsh); |
$output = &javascript_setforms($now,$emailusername)."\n"; |
$output = &javascript_setforms($now,$emailusername,$captcha,$usertype)."\n"; |
$gotlondes = 1; |
$gotlondes = 1; |
} |
} |
} |
} |
Line 800 sub print_dataentry_form {
|
Line 910 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') { |
|
$output .= ' |
|
<input type="hidden" name="crypt" value="" /> |
|
<input type="hidden" name="code" value="" /> |
|
'; |
|
} elsif ($captcha eq 'recaptcha') { |
|
$output .= ' |
|
<input type="hidden" name="recaptcha_challenge_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" /> |
<input type="hidden" name="serverid" value="$lonhost" /> |
<input type="hidden" name="serverid" value="$lonhost" /> |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="upass" value="" /> |
<input type="hidden" name="upass" value="" /> |
<input type="hidden" name="udom" value="" /> |
<input type="hidden" name="udom" value="" /> |
<input type="hidden" name="crypt" value="" /> |
|
<input type="hidden" name="code" value="" /> |
|
<input type="hidden" name="phase" value="createaccount" /> |
<input type="hidden" name="phase" value="createaccount" /> |
<input type="hidden" name="create_with_email" value="1" /> |
<input type="hidden" name="create_with_email" value="1" /> |
</form> |
</form> |
Line 821 ENDSERVERFORM
|
Line 943 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 879 sub get_creation_controls {
|
Line 1002 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 { |
|
$emailusername = { |
|
default => { |
|
'lastname' => '1', |
|
'firstname' => 1, |
|
}, |
|
}; |
} |
} |
} |
} |
} |
} |
Line 895 sub create_account {
|
Line 1025 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 905 sub create_account {
|
Line 1035 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 943 sub create_account {
|
Line 1074 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 1063 sub login_failure_msg {
|
Line 1197 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 1099 sub username_check {
|
Line 1233 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 1507 sub sso_logout_frag {
|
Line 1648 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 1555 function getFormByName(item) {
|
Line 1696 function getFormByName(item) {
|
} |
} |
return -1; |
return -1; |
} |
} |
|
// ]]> |
</script> |
</script> |
ENDSCRIPT |
ENDSCRIPT |
|
|