diff options
author | Mark Wells <mark@freeside.biz> | 2016-02-25 15:16:35 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2016-02-25 17:11:10 -0800 |
commit | fa97f29ea43276a6f2636e1f251c775c7fa9e67c (patch) | |
tree | f0ee4d7db2daf9a1b6459733ba81abba2d4f9cd0 | |
parent | 50f247ce6da7497428ce772d3c37c6cba3b9c736 (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 3fb787c47..ac7ba5059 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 72f232096..3b36e46f0 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 a824b8e53..c1b558d6c 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 6bb67af08..c2f5d7122 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; |