From: Mark Wells Date: Thu, 25 Feb 2016 23:16:35 +0000 (-0800) Subject: allow records with password history to be deleted, from #32456 X-Git-Url: http://git.freeside.biz/gitweb/?a=commitdiff_plain;h=9967e37ce23ef112fddc2606390ba5a89a51adaa;hp=9075f8df5c274446dc42dd499413269effa183d5;p=freeside.git allow records with password history to be deleted, from #32456 --- 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;