summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-03-13 13:35:22 -0700
committerMark Wells <mark@freeside.biz>2012-03-13 13:35:22 -0700
commitda590709ee5f3e6a661950fcfce39dbbf9d6add4 (patch)
treeadb857c098d0d9f14939e462881cf2374dadd015
parentfdd00d4549faaa9de8952402f77fa86d0b8b22ee (diff)
fix selfservice password change with ldap encoding, #16810
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm4
-rw-r--r--FS/FS/svc_acct.pm3
2 files changed, 4 insertions, 3 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 7d177f9..acd0c6e 100644
--- a/FS/FS/ClientAPI/MyAccount.pm
+++ b/FS/FS/ClientAPI/MyAccount.pm
@@ -2485,7 +2485,7 @@ sub myaccount_passwd {
unless $svc_acct->check_password($p->{'old_password'});
}
- $svc_acct->_password($p->{'new_password'});
+ $svc_acct->set_password($p->{'new_password'});
my $error = $svc_acct->replace();
my($label, $value) = $svc_acct->cust_svc->label;
@@ -2626,7 +2626,7 @@ sub process_reset_passwd {
my $svc_acct = qsearchs('svc_acct', { 'svcnum' => $svcnum } )
or return { 'error' => "Service not found" };
- $svc_acct->_password($p->{'new_password'});
+ $svc_acct->set_password($p->{'new_password'});
my $error = $svc_acct->replace();
my($label, $value) = $svc_acct->cust_svc->label;
diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm
index 139f927..e67db43 100644
--- a/FS/FS/svc_acct.pm
+++ b/FS/FS/svc_acct.pm
@@ -2524,7 +2524,8 @@ sub check_password {
if ( $self->_password_encoding eq 'ldap' ) {
- my $auth = from_rfc2307 Authen::Passphrase $self->_password;
+ $password =~ s/^{PLAIN}/{CLEARTEXT}/;
+ my $auth = from_rfc2307 Authen::Passphrase $password;
return $auth->match($check_password);
} elsif ( $self->_password_encoding eq 'crypt' ) {