summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2016-02-25 15:16:35 -0800
committerMark Wells <mark@freeside.biz>2016-02-27 19:28:04 -0800
commit9967e37ce23ef112fddc2606390ba5a89a51adaa (patch)
tree6f3af1903f8b123e63a8f6dcc5540b487c8047e9
parent9075f8df5c274446dc42dd499413269effa183d5 (diff)
allow records with password history to be deleted, from #32456
-rw-r--r--FS/FS/Password_Mixin.pm20
-rw-r--r--FS/FS/access_user.pm3
-rw-r--r--FS/FS/contact.pm3
-rw-r--r--FS/FS/svc_acct.pm3
4 files changed, 26 insertions, 3 deletions
diff --git a/FS/FS/Password_Mixin.pm b/FS/FS/Password_Mixin.pm
index bdfab1881..f07f772c9 100644
--- a/FS/FS/Password_Mixin.pm
+++ b/FS/FS/Password_Mixin.pm
@@ -214,6 +214,26 @@ sub insert_password_history {
}
+=item delete_password_history;
+
+Removes all password history records attached to this object, in preparation
+to delete the object.
+
+=cut
+
+sub delete_password_history {
+ my $self = shift;
+ my @records = qsearch('password_history', {
+ $self->password_history_key => $self->get($self->primary_key)
+ });
+ my $error = '';
+ foreach (@records) {
+ $error ||= $_->delete;
+ }
+ return $error . ' (clearing password history)' if $error;
+ '';
+}
+
=item _blowfishcrypt PASSWORD
For internal use: takes PASSWORD and returns a new
diff --git a/FS/FS/access_user.pm b/FS/FS/access_user.pm
index ffbe7ac75..1f5cec38d 100644
--- a/FS/FS/access_user.pm
+++ b/FS/FS/access_user.pm
@@ -173,7 +173,8 @@ sub delete {
my $dbh = dbh;
my $error =
- $self->SUPER::delete(@_)
+ $self->delete_password_history
+ || $self->SUPER::delete(@_)
|| $self->htpasswd_kludge('-D')
;
diff --git a/FS/FS/contact.pm b/FS/FS/contact.pm
index d906dc9a2..4012109a7 100644
--- a/FS/FS/contact.pm
+++ b/FS/FS/contact.pm
@@ -233,7 +233,8 @@ sub delete {
}
}
- my $error = $self->SUPER::delete;
+ my $error = $self->delete_password_history
+ || $self->SUPER::delete;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;
diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm
index af152a82e..8a70c1acd 100644
--- a/FS/FS/svc_acct.pm
+++ b/FS/FS/svc_acct.pm
@@ -925,7 +925,8 @@ sub delete {
}
}
- my $error = $self->SUPER::delete; # usergroup here
+ my $error = $self->delete_password_history
+ || $self->SUPER::delete; # usergroup here
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;