--- loncom/interface/resetpw.pm 2009/09/23 20:17:53 1.17.10.1
+++ loncom/interface/resetpw.pm 2010/03/22 20:11:22 1.24
@@ -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.17.10.1 2009/09/23 20:17:53 gci Exp $
+# $Id: resetpw.pm,v 1.24 2010/03/22 20:11:22 droeschl Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -26,6 +26,28 @@
# http://www.lon-capa.org/
#
#
+
+=pod
+
+=head1 NAME
+
+Apache::resetpw: reset user password.
+
+=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".
+
+=cut
+
package Apache::resetpw;
use strict;
@@ -46,7 +68,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']);
@@ -56,9 +78,7 @@ sub handler {
my $udom = $env{'form.udom'};
my $token = $env{'form.token'};
my $start_page =
- &Apache::loncommon::start_page('Reset password','',
- {
- 'no_inline_link' => 1,});
+ &Apache::loncommon::start_page('Reset password');
$r->print($start_page);
$r->print('
'.&mt('Reset forgotten LON-CAPA password').'
');
my $output;
@@ -76,18 +96,26 @@ sub handler {
my %userinfo =
&Apache::lonnet::get('environment',\@emailtypes,
$udom,$uname);
- my $email = '';
- my $emailtarget;
+ my @allemails;
foreach my $type (@emailtypes) {
- $email = $userinfo{$type};
- if ($email =~ /[^\@]+\@[^\@]+/) {
- $emailtarget = $type;
- last;
+ my $email = $userinfo{$type};
+ my @items;
+ if ($email =~ /,/) {
+ @items = split(',',$userinfo{$type});
+ } else {
+ @items = ($email);
+ }
+ foreach my $item (@items) {
+ if ($item =~ /^[^\@]+\@[^\@]+\.[^\@\.]+$/) {
+ unless(grep(/^\Q$item\E$/,@allemails)) {
+ push(@allemails,$item);
+ }
+ }
}
}
- if ($email =~ /^[^\@]+\@[^\@]+\.[^\@\.]+$/) {
- if ($useremail eq $email) {
- $output = &send_token($uname,$udom,$email,$server,
+ if (@allemails > 0) {
+ if (grep(/^\Q$useremail\E$/,@allemails)) {
+ $output = &send_token($uname,$udom,$useremail,$server,
$domdesc,$contact_name,
$contact_email);
} else {
@@ -123,7 +151,7 @@ sub get_uname {
uemail => 'E-mail address in LON-CAPA',
proc => 'Proceed');
- my $msg = &mt('If you use the same account for other campus services besides LON-CAPA, (e.g., e-mail, course registration, etc.), a separate centrally managed mechanism likely exists to reset a password. However, if your account is used for just LON-CAPA access you will probably be able to reset a password from this page.');
+ my $msg = &mt('If you use the same account for other campus services besides LON-CAPA, (e.g., e-mail, course registration, etc.), a separate centrally managed mechanism likely exists to reset a password. However, if your account is used for just LON-CAPA access you will probably be able to reset a password from this page.');
$msg .= '
'.&mt('Three conditions must be met:')
.'- '.&mt('An e-mail address must have previously been associated with your LON-CAPA username.').'
'
.'- '.&mt('You must be able to access e-mail sent to that address.').'
'
@@ -133,9 +161,9 @@ sub get_uname {