Commit 5173b6cb authored by miketosh's avatar miketosh Committed by Frédéric Buclin

Bug 690173: Cannot delete user accounts due to FK on audit_log

r/a=mkanat
parent ce3970fd
...@@ -516,7 +516,8 @@ use constant ABSTRACT_SCHEMA => { ...@@ -516,7 +516,8 @@ use constant ABSTRACT_SCHEMA => {
FIELDS => [ FIELDS => [
user_id => {TYPE => 'INT3', user_id => {TYPE => 'INT3',
REFERENCES => {TABLE => 'profiles', REFERENCES => {TABLE => 'profiles',
COLUMN => 'userid'}}, COLUMN => 'userid',
DELETE => 'SET NULL'}},
class => {TYPE => 'varchar(255)', NOTNULL => 1}, class => {TYPE => 'varchar(255)', NOTNULL => 1},
object_id => {TYPE => 'INT4', NOTNULL => 1}, object_id => {TYPE => 'INT4', NOTNULL => 1},
field => {TYPE => 'varchar(64)', NOTNULL => 1}, field => {TYPE => 'varchar(64)', NOTNULL => 1},
......
...@@ -656,6 +656,9 @@ sub update_table_definitions { ...@@ -656,6 +656,9 @@ sub update_table_definitions {
# 2011-06-15 dkl@mozilla.com - Bug 658929 # 2011-06-15 dkl@mozilla.com - Bug 658929
_migrate_disabledtext_boolean(); _migrate_disabledtext_boolean();
# 2011-10-11 miketosh - Bug 690173
_on_delete_set_null_for_audit_log_userid();
################################################################ ################################################################
# New --TABLE-- changes should go *** A B O V E *** this point # # New --TABLE-- changes should go *** A B O V E *** this point #
################################################################ ################################################################
...@@ -3602,6 +3605,15 @@ sub _rename_tags_to_tag { ...@@ -3602,6 +3605,15 @@ sub _rename_tags_to_tag {
} }
} }
sub _on_delete_set_null_for_audit_log_userid {
my $dbh = Bugzilla->dbh;
my $fk = $dbh->bz_fk_info('audit_log', 'user_id');
if ($fk and !defined $fk->{DELETE}) {
$fk->{DELETE} = 'SET NULL';
$dbh->bz_alter_fk('audit_log', 'user_id', $fk);
}
}
1; 1;
__END__ __END__
......
...@@ -1763,6 +1763,18 @@ sub mail_settings { ...@@ -1763,6 +1763,18 @@ sub mail_settings {
return $self->{'mail_settings'}; return $self->{'mail_settings'};
} }
sub has_audit_entries {
my $self = shift;
my $dbh = Bugzilla->dbh;
if (!exists $self->{'has_audit_entries'}) {
$self->{'has_audit_entries'} =
$dbh->selectrow_array('SELECT 1 FROM audit_log WHERE user_id = ? ' .
$dbh->sql_limit(1), undef, $self->id);
}
return $self->{'has_audit_entries'};
}
sub is_insider { sub is_insider {
my $self = shift; my $self = shift;
......
...@@ -226,7 +226,8 @@ ...@@ -226,7 +226,8 @@
[% IF assignee_or_qa || cc || component_cc || email_setting || flags.requestee || [% IF assignee_or_qa || cc || component_cc || email_setting || flags.requestee ||
namedqueries || profile_setting || quips || series || watch.watched || namedqueries || profile_setting || quips || series || watch.watched ||
watch.watcher || whine_events || whine_schedules || other_safe %] watch.watcher || whine_events || whine_schedules || otheruser.has_audit_entries ||
other_safe %]
<div class="warningmessages"> <div class="warningmessages">
<p>The following deletions are <b>safe</b> and will not generate <p>The following deletions are <b>safe</b> and will not generate
referential integrity inconsistencies.</p> referential integrity inconsistencies.</p>
...@@ -427,6 +428,14 @@ ...@@ -427,6 +428,14 @@
but the whines themselves will be left unaltered. but the whines themselves will be left unaltered.
</li> </li>
[% END %] [% END %]
[% IF otheruser.has_audit_entries %]
<li>
The user has performed audited administrative tasks
that are logged in the database.
If you delete this user account, the audit log entries
will no longer be indentifiable.
</li>
[% END %]
[% Hook.process('warn_safe') %] [% Hook.process('warn_safe') %]
</ul> </ul>
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment