diff options
author | Mark Wells <mark@freeside.biz> | 2016-02-25 15:16:35 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2016-02-27 20:27:37 -0800 |
commit | 769743058fc3b00aac7d3c084391198c7f08d23d (patch) | |
tree | 014350c805e6639cfdefeaf372a5e910cf56e49a | |
parent | e476b3f5c0dd830f9c3698a1a9a8ba8848e6a490 (diff) |
allow records with password history to be deleted, from #32456
-rw-r--r-- | FS/FS/Password_Mixin.pm | 20 | ||||
-rw-r--r-- | FS/FS/access_user.pm | 3 | ||||
-rw-r--r-- | FS/FS/contact.pm | 3 | ||||
-rw-r--r-- | FS/FS/svc_acct.pm | 3 |
4 files changed, 26 insertions, 3 deletions
diff --git a/FS/FS/Password_Mixin.pm b/FS/FS/Password_Mixin.pm index 3fb787c..ac7ba50 100644 --- a/FS/FS/Password_Mixin.pm +++ b/FS/FS/Password_Mixin.pm @@ -215,6 +215,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 72f2320..3b36e46 100644 --- a/FS/FS/access_user.pm +++ b/FS/FS/access_user.pm @@ -161,7 +161,8 @@ sub delete { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - my $error = $self->SUPER::delete(@_); + my $error = $self->delete_password_history + || $self->SUPER::delete(@_); if ( $error ) { $dbh->rollback or die $dbh->errstr if $oldAutoCommit; diff --git a/FS/FS/contact.pm b/FS/FS/contact.pm index a824b8e..c1b558d 100644 --- a/FS/FS/contact.pm +++ b/FS/FS/contact.pm @@ -378,7 +378,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 6bb67af..c2f5d71 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -847,7 +847,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; |