--- loncom/interface/createaccount.pm 2008/07/13 00:51:31 1.18
+++ loncom/interface/createaccount.pm 2008/07/13 17:57:58 1.19
@@ -3,7 +3,7 @@
# institutional log-in ID (institutional authentication required - localauth
# or kerberos) or an e-mail address.
#
-# $Id: createaccount.pm,v 1.18 2008/07/13 00:51:31 raeburn Exp $
+# $Id: createaccount.pm,v 1.19 2008/07/13 17:57:58 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -180,19 +180,26 @@ sub handler {
$r->print($output);
$r->print(&Apache::loncommon::end_page());
return OK;
- }
-
- &print_header($r,$start_page);
- if ($env{'form.create_with_email'}) {
+ } elsif ($env{'form.phase'} eq 'username_validation') {
+ (my $result,$output) =
+ &username_validation($r,$env{'form.uname'},$domain,$domdesc,
+ $contact_name,$contact_email,$courseid,
+ $lonhost);
+ if ($result eq 'existingaccount') {
+ $r->print($output);
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
+ } else {
+ &print_header($r,$start_page);
+ }
+ } elsif ($env{'form.create_with_email'}) {
+ &print_header($r,$start_page);
$output = &process_email_request($env{'form.useremail'},$domain,$domdesc,
$contact_name,$contact_email,\@cancreate,
$lonhost,$domconfig{'usercreation'},
$courseid);
- } elsif ($env{'form.phase'} eq 'username_validation') {
- $output = &username_validation($env{'form.uname'},$domain,$domdesc,
- $contact_name,$contact_email,$courseid,
- $lonhost);
} elsif (!$token) {
+ &print_header($r,$start_page);
my $now=time;
if (grep(/^login$/,@cancreate)) {
my $jsh=Apache::File->new($include."/londes.js");
@@ -568,7 +575,9 @@ sub start_session {
if ($r->dir_config('lonBalancer') eq 'yes') {
&Apache::lonauth::success($r,$form{'uname'},$form{'udom'},
$lonhost,'noredirect',undef,\%form);
- my $delete = &Apache::lonnet::tmpdel($token);
+ if ($token ne '') {
+ my $delete = &Apache::lonnet::tmpdel($token);
+ }
$r->internal_redirect('/adm/switchserver');
} else {
&Apache::lonauth::success($r,$form{'uname'},$form{'udom'},
@@ -707,21 +716,32 @@ sub create_account {
}
sub username_validation {
- my ($username,$domain,$domdesc,$contact_name,$contact_email,$courseid,$lonhost) = @_;
+ my ($r,$username,$domain,$domdesc,$contact_name,$contact_email,$courseid,
+ $lonhost) = @_;
my ($retrieved,$output,$upass);
$username= &LONCAPA::clean_username($username);
$domain = &LONCAPA::clean_domain($domain);
my $uhome = &Apache::lonnet::homeserver($username,$domain);
- if ($uhome ne 'no_host') {
- $output = &invalid_state('existinguser',$domdesc,
- $contact_name,$contact_email);
- return $output;
- }
($retrieved,$output,$upass) = &process_credentials($env{'form.logtoken'},
$env{'form.serverid'});
- if ($retrieved eq 'ok') {
+ if ($retrieved ne 'ok') {
+ return ('fail',$output);
+ }
+ if ($uhome ne 'no_host') {
+ my $result = &Apache::lonnet::authenticate($username,$upass,$domain);
+ if ($result ne 'no_host') {
+ my %form = &start_session($r,$username,$domain,$lonhost,$courseid);
+ $output = '
'.&mt('A LON-CAPA account already exists for username [_1] at this institution ([_2]).',''.$username.'',$domdesc).'
'.&mt('The password entered was also correct so you have been logged in.');
+ return ('existingaccount',$output);
+ } else {
+ $output = '