[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Tue, 19 Feb 2002 21:53:42 -0000
matthew Tue Feb 19 16:53:42 2002 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
Added &changepass() to allow the user to change their password.
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.201 loncom/lonnet/perl/lonnet.pm:1.202
--- loncom/lonnet/perl/lonnet.pm:1.201 Thu Feb 14 15:44:26 2002
+++ loncom/lonnet/perl/lonnet.pm Tue Feb 19 16:53:42 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.201 2002/02/14 20:44:26 albertel Exp $
+# $Id: lonnet.pm,v 1.202 2002/02/19 21:53:42 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -346,6 +346,41 @@
}
}
return $spareserver;
+}
+
+# --------------------------------------------- Try to change a user's password
+
+sub changepass {
+ my ($uname,$udom,$currentpass,$newpass,$server)=@_;
+ $currentpass = &escape($currentpass);
+ $newpass = &escape($newpass);
+ my $answer = reply("encrypt:passwd:$udom:$uname:$currentpass:$newpass",
+ $server);
+ if (! $answer) {
+ &logthis("No reply on password change request to $server ".
+ "by $uname in domain $udom.");
+ } elsif ($answer =~ "^ok") {
+ &logthis("$uname in $udom successfully changed their password ".
+ "on $server.");
+ } elsif ($answer =~ "^pwchange_failure") {
+ &logthis("$uname in $udom was unable to change their password ".
+ "on $server. The action was blocked by either lcpasswd ".
+ "or pwchange");
+ } elsif ($answer =~ "^non_authorized") {
+ &logthis("$uname in $udom did not get their password correct when ".
+ "attempting to change it on $server.");
+ } elsif ($answer =~ "^auth_mode_error") {
+ &logthis("$uname in $udom attempted to change their password despite ".
+ "not being locally or internally authenticated on $server.");
+ } elsif ($answer =~ "^unknown_user") {
+ &logthis("$uname in $udom attempted to change their password ".
+ "on $server but were unable to because $server is not ".
+ "their home server.");
+ } elsif ($answer =~ "^refused") {
+ &logthis("$server refused to change $uname in $udom password because ".
+ "it was sent an unencrypted request to change the password.");
+ }
+ return $answer;
}
# ----------------------- Try to determine user's current authentication scheme