--- loncom/interface/resetpw.pm 2009/09/30 21:47:07 1.18 +++ loncom/interface/resetpw.pm 2009/10/08 22:59:18 1.21 @@ -1,7 +1,7 @@ # The LearningOnline Network # Allow access to password changing via a token sent to user's e-mail. # -# $Id: resetpw.pm,v 1.18 2009/09/30 21:47:07 raeburn Exp $ +# $Id: resetpw.pm,v 1.21 2009/10/08 22:59:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,6 +26,29 @@ # http://www.lon-capa.org/ # # + +=pod + +=head1 NAME + +Apache::resetpw - pile of common routines + +=head1 SYNOPSIS + +Handles resetting of forgotten passwords. + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 OVERVIEW + +A user with an e-mail address associated with his/her LON-CAPA username +can reset a forgotten password, using a link sent to the e-mail address +if the authentication type for the account is "internal". +account is "internal". + +=cut + package Apache::resetpw; use strict; @@ -46,7 +69,7 @@ sub handler { my $contact_name = &mt('LON-CAPA helpdesk'); my $contact_email = $r->dir_config('lonSupportEMail'); my $server = $r->dir_config('lonHostID'); - my $defdom = $r->dir_config('lonDefDomain'); + my $defdom = &Apache::lonnet::default_login_domain(); &Apache::lonacc::get_posted_cgi($r); &Apache::lonlocal::get_language_handle($r); &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['token']); @@ -271,10 +294,24 @@ sub reset_passwd { } $msg .= '

' .''.&mt('Go to the login page').'.'; + } elsif ($change_failed eq 'invalid_client') { + my $homeserver = &Apache::lonnet::homeserver($data{'username'},$data{'domain'}); + if ($homeserver eq 'no_host') { + $msg .= &generic_failure_msg($contact_name,$contact_email); + } else { + my $protocol = $Apache::lonnet::protocol{$homeserver}; + $protocol = 'http' if ($protocol ne 'https'); + my $url = $protocol.'://'.&Apache::lonnet::hostname($homeserver). + '/adm/resetpw'; + my ($opentag,$closetag); + if ($url) { + $opentag = ''; + $closetag = ''; + } + $msg .= &mt('A problem occurred when attempting to reset the password for your account. Please try again from your [_1]home server[_2].',$opentag,$closetag); + } } else { - $msg .= &mt('A problem occurred when attempting to reset the password for your account. Please contact the [_1] - ([_2]) for assistance.' - ,$contact_name - ,''.$contact_email.''); + $msg .= &generic_failure_msg($contact_name,$contact_email); } } else { $r->print(&mt('The token included in an e-mail sent to you [_1] has been verified, so you may now proceed to reset the password for your LON-CAPA account.',$reqtime).'

'); @@ -292,6 +329,12 @@ sub reset_passwd { return $msg; } +sub generic_failure_msg { + my ($contact_name,$contact_email) = @_; + return &mt('A problem occurred when attempting to reset the password for your account. Please contact the [_1] - ([_2]) for assistance.', + $contact_name,''.$contact_email.''); +} + sub create_passwd { my $passwd = ''; my @letts = ("a".."z");