version 1.22, 2008/07/17 12:10:05
|
version 1.30, 2009/03/12 13:59:49
|
Line 58 sub handler {
|
Line 58 sub handler {
|
my $sso_username = $r->subprocess_env->get('REDIRECT_SSOUserUnknown'); |
my $sso_username = $r->subprocess_env->get('REDIRECT_SSOUserUnknown'); |
my $sso_domain = $r->subprocess_env->get('REDIRECT_SSOUserDomain'); |
my $sso_domain = $r->subprocess_env->get('REDIRECT_SSOUserDomain'); |
|
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token','courseid']); |
|
&Apache::lonacc::get_posted_cgi($r); |
|
&Apache::lonlocal::get_language_handle($r); |
|
|
if ($sso_username ne '' && $sso_domain ne '') { |
if ($sso_username ne '' && $sso_domain ne '') { |
$domain = $sso_domain; |
$domain = $sso_domain; |
} else { |
} else { |
$domain = &Apache::lonnet::default_login_domain(); |
$domain = &Apache::lonnet::default_login_domain(); |
|
if (defined($env{'form.courseid'})) { |
|
if (&validate_course($env{'form.courseid'})) { |
|
if ($env{'form.courseid'} =~ /^($match_domain)_($match_courseid)$/) { |
|
$domain = $1; |
|
} |
|
} |
|
} |
} |
} |
my $domdesc = &Apache::lonnet::domain($domain,'description'); |
my $domdesc = &Apache::lonnet::domain($domain,'description'); |
my $contact_name = &mt('LON-CAPA helpdesk'); |
my $contact_name = &mt('LON-CAPA helpdesk'); |
Line 74 sub handler {
|
Line 85 sub handler {
|
my $include = $r->dir_config('lonIncludes'); |
my $include = $r->dir_config('lonIncludes'); |
my $start_page; |
my $start_page; |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token','courseid']); |
|
&Apache::lonacc::get_posted_cgi($r); |
|
&Apache::lonlocal::get_language_handle($r); |
|
|
|
my $handle = &Apache::lonnet::check_for_valid_session($r); |
my $handle = &Apache::lonnet::check_for_valid_session($r); |
if ($handle ne '') { |
if (($handle ne '') && ($handle !~ /^publicuser_\d+$/)) { |
$start_page = |
$start_page = |
&Apache::loncommon::start_page('Already logged in'); |
&Apache::loncommon::start_page('Already logged in'); |
my $end_page = |
my $end_page = |
Line 263 sub print_footer {
|
Line 270 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','useremail','crypt','cfirstname','clastname', |
'code','useremail','crypt','cfirstname','clastname', |
'cmiddlename','cgeneration','cpermanentemail','cid]). |
'cmiddlename','cgeneration','cpermanentemail','cid']). |
'</form>'); |
'</form>'); |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
Line 381 sub print_username_form {
|
Line 388 sub print_username_form {
|
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
unam => 'username', |
unam => 'username', |
udom => 'domain', |
udom => 'domain', |
uemail => 'Email address in LON-CAPA', |
uemail => 'E-mail address in LON-CAPA', |
proc => 'Proceed'); |
proc => 'Proceed'); |
my $output; |
my $output; |
if (ref($cancreate) eq 'ARRAY') { |
if (ref($cancreate) eq 'ARRAY') { |
Line 397 sub print_username_form {
|
Line 404 sub print_username_form {
|
} |
} |
if (grep(/^email$/,@{$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>'; |
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 />'; |
|
} |
|
my $emailform = '<input type="text" name="useremail" size="25" value="" />'; |
|
my $captchaform = &create_captcha(); |
my $captchaform = &create_captcha(); |
my $submit_text = &mt('Request LON-CAPA account'); |
if ($captchaform) { |
$output .= '<form name="createaccount" method="post" onSubmit="return validate_email()" action="/adm/createaccount">'. |
my $submit_text = &mt('Request LON-CAPA account'); |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
my $emailform = '<input type="text" name="useremail" size="25" value="" />'; |
&Apache::lonhtmlcommon::row_title(&mt('E-mail address'), |
if (grep(/^login$/,@{$cancreate})) { |
'LC_pick_box_title')."\n". |
$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 />'; |
$emailform."\n". |
} else { |
&Apache::lonhtmlcommon::row_closure(1). |
$output .= '<br />'; |
&Apache::lonhtmlcommon::row_title(&mt('Validation'), |
} |
'LC_pick_box_title')."\n". |
$output .= '<form name="createaccount" method="post" onSubmit="return validate_email()" action="/adm/createaccount">'. |
$captchaform."\n".'<br /><br />'; |
&Apache::lonhtmlcommon::start_pick_box()."\n". |
if ($courseid ne '') { |
&Apache::lonhtmlcommon::row_title(&mt('E-mail address'), |
$output .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
'LC_pick_box_title')."\n". |
} |
$emailform."\n". |
$output .= '<input type="submit" name="create_with_email" value="'. |
&Apache::lonhtmlcommon::row_closure(1). |
$submit_text.'" />'. |
&Apache::lonhtmlcommon::row_title(&mt('Validation'), |
&Apache::lonhtmlcommon::row_closure(1). |
'LC_pick_box_title')."\n". |
&Apache::lonhtmlcommon::end_pick_box().'<br /><br />'; |
$captchaform."\n".'<br /><br />'; |
if ($courseid ne '') { |
if ($courseid ne '') { |
$output .= &Apache::lonhtmlcommon::echo_form_input(['courseid']); |
$output .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
|
} |
|
$output .= '<input type="submit" name="create_with_email" value="'. |
|
$submit_text.'" />'. |
|
&Apache::lonhtmlcommon::row_closure(1). |
|
&Apache::lonhtmlcommon::end_pick_box().'<br /><br />'; |
|
if ($courseid ne '') { |
|
$output .= &Apache::lonhtmlcommon::echo_form_input(['courseid']); |
|
} |
|
$output .= '</form>'; |
|
} else { |
|
my $helpdesk = '/adm/helpdesk?origurl=%2fadm%2fcreateaccount'; |
|
if ($courseid ne '') { |
|
$helpdesk .= '&courseid='.$courseid; |
|
} |
|
$output .= '<span class="LC_error">'.&mt('An error occurred generating the validation code[_1] required for an e-mail address to be used as username.','<br />').'</span><br /><br />'.&mt('[_1]Contact the helpdesk[_2] or [_3]reload[_2] the page and try again.','<a href="'.$helpdesk.'">','</a>','<a href="javascript:window.location.reload()">'); |
} |
} |
$output .= '</form></div>'; |
$output .= '</div>'; |
} |
} |
} |
} |
if ($output eq '') { |
if ($output eq '') { |
Line 470 sub login_box {
|
Line 486 sub login_box {
|
'<input type="button" name="username_validation" value="'. |
'<input type="button" name="username_validation" value="'. |
$submit_text.'" onclick="javascript:send()" />'."\n". |
$submit_text.'" onclick="javascript:send()" />'."\n". |
&Apache::lonhtmlcommon::row_closure(1)."\n". |
&Apache::lonhtmlcommon::row_closure(1)."\n". |
&Apache::lonhtmlcommon::end_pick_box().'<br /><br />'."\n". |
&Apache::lonhtmlcommon::end_pick_box(); |
'<input type="hidden" name="lextkey" value="'.$lextkey.'">'."\n". |
$output .= '<p>'. |
|
'<a href="/adm/resetpw">'.&mt('Forgot password?').'</a>'. |
|
'</p>'."\n"; |
|
$output .= '<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>'; |
return $output; |
return $output; |
Line 517 sub process_email_request {
|
Line 536 sub process_email_request {
|
$contact_email,$captcha_hash{$captcha_chk}); |
$contact_email,$captcha_hash{$captcha_chk}); |
return $output; |
return $output; |
} |
} |
my (%rulematch,%inst_results,%curr_rules,%got_rules,%alerts); |
|
my $uhome=&Apache::lonnet::homeserver($useremail,$domain); |
my $uhome=&Apache::lonnet::homeserver($useremail,$domain); |
if ($uhome eq 'no_host') { |
if ($uhome eq 'no_host') { |
my $checkhash; |
my (%rulematch,%inst_results,%curr_rules,%got_rules,%alerts); |
my $checks = { 'username' => 1 }; |
&call_rulecheck($useremail,$domain,\%alerts,\%rulematch, |
$checkhash->{$useremail.':'.$domain} = { 'newuser' => 1, }; |
\%inst_results,\%curr_rules,%got_rules,'username'); |
&Apache::loncommon::user_rule_check($checkhash,$checks, |
if (ref($alerts{'username'}) eq 'HASH') { |
\%alerts,\%rulematch,\%inst_results,\%curr_rules, |
if (ref($alerts{'username'}{$domain}) eq 'HASH') { |
\%got_rules); |
|
if (ref($alerts{'useremail'}) eq 'HASH') { |
|
if (ref($alerts{'useremail'}{$domain}) eq 'HASH') { |
|
if ($alerts{'username'}{$domain}{$useremail}) { |
if ($alerts{'username'}{$domain}{$useremail}) { |
$output = &invalid_state('userrules',$domdesc, |
$output = &invalid_state('userrules',$domdesc, |
$contact_name,$contact_email); |
$contact_name,$contact_email); |
Line 552 sub process_email_request {
|
Line 567 sub process_email_request {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub call_rulecheck { |
|
my ($uname,$udom,$alerts,$rulematch,$inst_results,$curr_rules, |
|
$got_rules,$tocheck) = @_; |
|
my ($checkhash,$checks); |
|
$checkhash->{$uname.':'.$udom} = { 'newuser' => 1, }; |
|
if ($tocheck eq 'username') { |
|
$checks = { 'username' => 1 }; |
|
} |
|
&Apache::loncommon::user_rule_check($checkhash,$checks, |
|
$alerts,$rulematch,$inst_results,$curr_rules, |
|
$got_rules); |
|
return; |
|
} |
|
|
sub send_token { |
sub send_token { |
my ($domain,$email,$server,$domdesc,$contact_name,$contact_email,$courseid) = @_; |
my ($domain,$email,$server,$domdesc,$contact_name,$contact_email,$courseid) = @_; |
my $msg = '<h3>'.&mt('Account creation status').'</h3>'. |
my $msg = '<h3>'.&mt('Account creation status').'</h3>'. |
Line 566 sub send_token {
|
Line 595 sub send_token {
|
my $token = &Apache::lonnet::tmpput(\%info,$server); |
my $token = &Apache::lonnet::tmpput(\%info,$server); |
if ($token !~ /^error/ && $token ne 'no_such_host') { |
if ($token !~ /^error/ && $token ne 'no_such_host') { |
my $esc_token = &escape($token); |
my $esc_token = &escape($token); |
my $mailmsg = &mt('A request was submitted on [_1] for creation of a LON-CAPA account at the following institution: [_2].',localtime(time),$domdesc).' '. |
my $showtime = localtime(time); |
&mt('To complete this process please open a web browser and enter the following' |
my $mailmsg = &mt('A request was submitted on [_1] for creation of a LON-CAPA account at the following institution: [_2].',$showtime,$domdesc).' '. |
.' URL in the address/location box: [_1]' |
&mt('To complete this process please open a web browser and enter the following URL in the address/location box: [_1]', |
,&Apache::lonnet::absolute_url().'/adm/createaccount?token='.$esc_token); |
&Apache::lonnet::absolute_url().'/adm/createaccount?token='.$esc_token); |
my $result = &Apache::resetpw::send_mail($domdesc,$email,$mailmsg,$contact_name, |
my $result = &Apache::resetpw::send_mail($domdesc,$email,$mailmsg,$contact_name, |
$contact_email); |
$contact_email); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
Line 698 sub print_dataentry_form {
|
Line 727 sub print_dataentry_form {
|
'lastname' => "Last Name", |
'lastname' => "Last Name", |
'generation' => "Generation", |
'generation' => "Generation", |
'permanentemail' => "Permanent e-mail address", |
'permanentemail' => "Permanent e-mail address", |
'id' => "ID/Student Number", |
'id' => "Student/Employee ID", |
'lg' => "Login Data" |
'lg' => "Login Data" |
); |
); |
my %textboxsize = ( |
my %textboxsize = ( |
Line 866 sub login_failure_msg {
|
Line 895 sub login_failure_msg {
|
sub username_check { |
sub username_check { |
my ($username,$domain,$domdesc,$courseid,$lonhost,$contact_email,$contact_name, |
my ($username,$domain,$domdesc,$courseid,$lonhost,$contact_email,$contact_name, |
$sso_logout) = @_; |
$sso_logout) = @_; |
my (%rulematch,%inst_results,$newuser,$checkfail,$rowcount,$editable,$output,$msg, |
my (%rulematch,%inst_results,$checkfail,$rowcount,$editable,$output,$msg, |
%alerts,%curr_rules,%got_rules); |
%alerts,%curr_rules,%got_rules); |
$newuser = 1; |
&call_rulecheck($username,$domain,\%alerts,\%rulematch, |
my $checkhash; |
\%inst_results,\%curr_rules,%got_rules,'username'); |
my $checks = { 'username' => 1 }; |
|
$checkhash->{$username.':'.$domain} = { 'newuser' => $newuser }; |
|
&Apache::loncommon::user_rule_check($checkhash,$checks,\%alerts,\%rulematch, |
|
\%inst_results,\%curr_rules,\%got_rules); |
|
if (ref($alerts{'username'}) eq 'HASH') { |
if (ref($alerts{'username'}) eq 'HASH') { |
if (ref($alerts{'username'}{$domain}) eq 'HASH') { |
if (ref($alerts{'username'}{$domain}) eq 'HASH') { |
if ($alerts{'username'}{$domain}{$username}) { |
if ($alerts{'username'}{$domain}{$username}) { |
Line 999 sub username_activation {
|
Line 1024 sub username_activation {
|
} |
} |
} |
} |
# Call modifyuser |
# Call modifyuser |
|
my (%rulematch,%inst_results,%curr_rules,%got_rules,%alerts,%info); |
|
&call_rulecheck($username,$domain,\%alerts,\%rulematch, |
|
\%inst_results,\%curr_rules,%got_rules); |
|
my @userinfo = ('firstname','middlename','lastname','generation', |
|
'permanentemail','id'); |
|
my %canmodify = |
|
&Apache::loncreateuser::selfcreate_canmodify('selfcreate',$domain, |
|
\@userinfo,\%inst_results); |
|
foreach my $item (@userinfo) { |
|
if ($canmodify{$item}) { |
|
$info{$item} = $env{'form.c'.$item}; |
|
} else { |
|
$info{$item} = $inst_results{$username.':'.$domain}{$item}; |
|
} |
|
} |
|
if (ref($inst_results{$username.':'.$domain}{'inststatus'}) eq 'ARRAY') { |
|
my @inststatuses = @{$inst_results{$username.':'.$domain}{'inststatus'}}; |
|
$info{'inststatus'} = join(':',map { &escape($_); } @inststatuses); |
|
} |
my $result = |
my $result = |
&Apache::lonnet::modifyuser($domain,$username,$env{'form.courseid'}, |
&Apache::lonnet::modifyuser($domain,$username,$env{'form.cid'}, |
$domdefaults{'auth_def'}, |
$domdefaults{'auth_def'}, |
$domdefaults{'auth_arg_def'},$env{'form.cfirstname'}, |
$domdefaults{'auth_arg_def'},$info{'firstname'}, |
$env{'form.cmiddlename'},$env{'form.clastname'}, |
$info{'middlename'},$info{'lastname'}, |
$env{'form.cgeneration'},undef,undef, |
$info{'generation'},undef,undef, |
$env{'form.cpermanentemail'}); |
$info{'permanentemail'},$info{'inststatus'}); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
my $delete = &Apache::lonnet::tmpdel($env{'form.authtoken'}); |
my $delete = &Apache::lonnet::tmpdel($env{'form.authtoken'}); |
$output = &mt('A LON-CAPA account has been created for username: [_1] in domain: [_2].',$username,$domain); |
$output = &mt('A LON-CAPA account has been created for username: [_1] in domain: [_2].',$username,$domain); |
Line 1059 sub invalid_state {
|
Line 1103 sub invalid_state {
|
} elsif ($error eq 'existinguser') { |
} elsif ($error eq 'existinguser') { |
$msg = &mt('The e-mail address you provided is already in use as a username in LON-CAPA at this institution.'); |
$msg = &mt('The e-mail address you provided is already in use as a username in LON-CAPA at this institution.'); |
} elsif ($error eq 'userrules') { |
} elsif ($error eq 'userrules') { |
$msg = &mt('Username rules for this LON-CAPA at this institution do not allow the e-mail address you provided to be used as a username.'); |
$msg = &mt('Username rules at this institution do not allow the e-mail address you provided to be used as a username.'); |
} elsif ($error eq 'userformat') { |
} elsif ($error eq 'userformat') { |
$msg = &mt('The e-mail address you provided may not be used as a username at this LON-CAPA institution.'); |
$msg = &mt('The e-mail address you provided may not be used as a username at this LON-CAPA institution.'); |
} elsif ($error eq 'captcha') { |
} elsif ($error eq 'captcha') { |
Line 1090 sub linkto_email_help {
|
Line 1134 sub linkto_email_help {
|
sub create_captcha { |
sub create_captcha { |
my ($output_dir,$db_dir) = @_; |
my ($output_dir,$db_dir) = @_; |
my %captcha_params = &captcha_settings(); |
my %captcha_params = &captcha_settings(); |
my $captcha = Authen::Captcha->new( |
my ($output,$maxtries,$tries) = ('',10,0); |
output_folder => $captcha_params{'output_dir'}, |
while ($tries < $maxtries) { |
data_folder => $captcha_params{'db_dir'}, |
$tries ++; |
); |
my $captcha = Authen::Captcha->new ( |
my $md5sum = $captcha->generate_code($captcha_params{'numchars'}); |
output_folder => $captcha_params{'output_dir'}, |
my $output = '<input type="hidden" name="crypt" value="'.$md5sum.'" />'."\n". |
data_folder => $captcha_params{'db_dir'}, |
&mt('Type in the letters/numbers shown below').' '. |
); |
'<input type="text" size="5" name="code" value="" /><br />'. |
my $md5sum = $captcha->generate_code($captcha_params{'numchars'}); |
'<img src="'.$captcha_params{'www_output_dir'}.'/'.$md5sum.'.png">'; |
|
|
if (-e $Apache::lonnet::perlvar{'lonCaptchaDir'}.'/'.$md5sum.'.png') { |
|
$output = '<input type="hidden" name="crypt" value="'.$md5sum.'" />'."\n". |
|
&mt('Type in the letters/numbers shown below').' '. |
|
'<input type="text" size="5" name="code" value="" /><br />'. |
|
'<img src="'.$captcha_params{'www_output_dir'}.'/'.$md5sum.'.png">'; |
|
last; |
|
} |
|
} |
return $output; |
return $output; |
} |
} |
|
|