diff --git a/lib/pf/UnifiedApi/Controller/Crud.pm b/lib/pf/UnifiedApi/Controller/Crud.pm index 42e38e6a9971..89c6125f1fda 100644 --- a/lib/pf/UnifiedApi/Controller/Crud.pm +++ b/lib/pf/UnifiedApi/Controller/Crud.pm @@ -384,9 +384,19 @@ sub do_remove { return ($status, $msg); } - return $self->dal->remove_by_id($self->build_item_lookup); + $self->pre_remove(); + ($status, $msg) = $self->dal->remove_by_id($self->build_item_lookup); + if (is_error($status)) { + return ($status, $msg); + } + + $self->post_remove(); + return ($status, $msg); } +sub pre_remove { } +sub post_remove { } + sub can_remove { return (200, ''); } diff --git a/lib/pf/UnifiedApi/Controller/Users.pm b/lib/pf/UnifiedApi/Controller/Users.pm index dab7a6729f8e..d5b2a3e271fb 100644 --- a/lib/pf/UnifiedApi/Controller/Users.pm +++ b/lib/pf/UnifiedApi/Controller/Users.pm @@ -23,9 +23,12 @@ use pf::security_event; use pf::constants; use pf::person qw(person_security_events person_unassign_nodes person_delete person_modify); use pf::node; +use pf::lookup::person; use pf::constants qw($default_pid); +use pf::constants::realm; use pf::error qw(is_error is_success); use pf::UnifiedApi::Search::Builder::Users; +use pf::lookup::person qw(); has 'search_builder_class' => 'pf::UnifiedApi::Search::Builder::Users'; @@ -658,6 +661,16 @@ sub _can_remove { } } +sub post_delete { + my ($self) = @_; + my $item = $self->item; + my $source = $item->{source}; + for my $ctx ('', @pf::constants::realm::CONTEXTS) { + pf::lookup::person::clear_lookup_person($self->id, $item->{source}, $ctx); + } + +} + =head1 AUTHOR Inverse inc. diff --git a/lib/pf/lookup/person.pm b/lib/pf/lookup/person.pm index 064372722718..a1b5291d0ac7 100644 --- a/lib/pf/lookup/person.pm +++ b/lib/pf/lookup/person.pm @@ -26,7 +26,7 @@ use pf::authentication; use pf::pfqueue::producer::redis; use pf::CHI; -my $CHI_CACHE = pf::CHI->new( namespace => 'person_lookup' ); +our $CHI_CACHE = pf::CHI->new( namespace => 'person_lookup' ); =head2 lookup_person @@ -91,6 +91,14 @@ sub async_lookup_person { $client->submit("general", person_lookup => {pid => $pid, source_id => $source_id, context => $context}); } +sub clear_lookup_person { + my ($pid, $source_id, $context) = @_; + my $logger = get_logger(); + my $cache_key = "$source_id.$pid.$context"; + $CHI_CACHE->remove($cache_key); + $logger->info("Clear cache for pid $pid with key $cache_key"); +} + =head1 AUTHOR Inverse inc.