'.&mt($message).'
' - .''.&mt('Please [_1]log in again[_2].' - ,"{'uname'}&domain=$form->{'udom'}\">",'') + .'
'.&mt($message).'
' + .''.&mt('Please [_1]log in again[_2].','','') .'
' .'' .$end_page @@ -162,23 +198,33 @@ sub handler { # -------------------------------- Prevent users from attempting to login twice my $handle = &Apache::lonnet::check_for_valid_session($r); if ($handle ne '') { + my $lonidsdir=$r->dir_config('lonIDsDir'); + if ($handle=~/^publicuser\_/) { +# For "public user" - remove it, we apparently really want to login + unlink($r->dir_config('lonIDsDir')."/$handle.id"); + } else { # Indeed, a valid token is found - &Apache::loncommon::content_type($r,'text/html'); - $r->send_http_header; - my $start_page = - &Apache::loncommon::start_page('Already logged in'); - my $end_page = - &Apache::loncommon::end_page(); - $r->print( - $start_page - .''.&mt('Please either [_1]continue the current session[_2] or [_3]logout[_4].' - ,'','','','') - .'
' - .'' - .$end_page - ); - return OK; + &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle); + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + my $start_page = + &Apache::loncommon::start_page('Already logged in'); + my $end_page = + &Apache::loncommon::end_page(); + my $dest = '/adm/roles'; + if ($env{'form.firsturl'} ne '') { + $dest = $env{'form.firsturl'}; + } + $r->print( + $start_page + .''.&mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].' + ,'','','','') + .'
' + .$end_page + ); + return OK; + } } # ---------------------------------------------------- No valid token, continue @@ -212,6 +258,7 @@ sub handler { my $role = $r->dir_config('lonRole'); my $domain = $r->dir_config('lonDefDomain'); my $prodir = $r->dir_config('lonUsersDir'); + my $contact_name = &mt('LON-CAPA helpdesk'); # ---------------------------------------- Get the information from login token @@ -230,7 +277,25 @@ sub handler { return OK; } } - my ($key,$firsturl)=split(/&/,$tmpinfo); + + if (!&Apache::lonnet::domain($form{'udom'})) { + &failed($r,'The domain you provided is not a valid LON-CAPA domain.',\%form); + return OK; + } + + my ($key,$firsturl,$rolestr,$symbstr)=split(/&/,$tmpinfo); + if ($rolestr) { + $rolestr = &unescape($rolestr); + } + if ($symbstr) { + $symbstr= &unescape($symbstr); + } + if ($rolestr =~ /^role=/) { + (undef,$form{'role'}) = split('=',$rolestr); + } + if ($symbstr =~ /^symb=/) { + (undef,$form{'symb'}) = split('=',$symbstr); + } my $keybin=pack("H16",$key); @@ -270,8 +335,10 @@ sub handler { if (grep(/^login$/,@cancreate)) { $defaultauth = 1; } + my $clientcancheckhost = 1; my $authhost=Apache::lonnet::authenticate($form{'uname'},$upass, - $form{'udom'},$defaultauth); + $form{'udom'},$defaultauth, + $clientcancheckhost); # --------------------------------------------------------------------- Failed? @@ -283,23 +350,25 @@ sub handler { my %domconfig = &Apache::lonnet::get_dom('configuration',['usercreation'],$form{'udom'}); if (grep(/^login$/,@cancreate)) { - my $start_page = - &Apache::loncommon::start_page('Create a user account in LON-CAPA', - '',{'no_inline_link' => 1,}); my $domdesc = &Apache::lonnet::domain($form{'udom'},'description'); - my ($output,$checkfail) = &Apache::createaccount::username_check($form{'uname'}, - $form{'udom'},$domdesc); + &check_can_host($r,\%form,'no_account_on_host',$domdesc); + my $start_page = + &Apache::loncommon::start_page('Create a user account in LON-CAPA'); + my $lonhost = $r->dir_config('lonHostID'); + my $origmail = $Apache::lonnet::perlvar{'lonSupportEMail'}; + my $contacts = + &Apache::loncommon::build_recipient_list(undef,'helpdeskmail', + $form{'udom'},$origmail); + my ($contact_email) = split(',',$contacts); + my $output = &Apache::createaccount::username_check($form{'uname'}, + $form{'udom'},$domdesc,'', + $lonhost,$contact_email,$contact_name); &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; &Apache::createaccount::print_header($r,$start_page); - my $msg = ''.&mt('You will be able to create one by logging into a LON-CAPA server within the [_1] domain.',$domdesc).'
'. + ''.&mt('[_1]Log in[_2]','',''). + &Apache::loncommon::end_page()); + } else { + $r->print(&Apache::loncommon::start_page('Access to LON-CAPA unavailable'). + '
'.&mt('Currently a LON-CAPA server is not available within the [_1] domain for you to log-in to, to create an account.',$domdesc).'
'. + &Apache::loncommon::end_page()); + } + return OK; + } else { + &success($r,$form->{'uname'},$udom,$authhost,'noredirect',undef, + $form); + my ($otherserver) = &Apache::lonnet::choose_server($udom); + $r->internal_redirect('/adm/switchserver?otherserver='.$otherserver); + } + } +} + 1; __END__