From fab4ef6a045e4fa2b31778d4dbf752448f2f0567 Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Mon, 20 Aug 2018 10:59:29 -0400 Subject: Bug 1482145 - add a scope_guard option to set_user() --- Bugzilla.pm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'Bugzilla.pm') diff --git a/Bugzilla.pm b/Bugzilla.pm index f26819d93..4d5e559d9 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -46,6 +46,7 @@ use File::Basename; use File::Spec::Functions; use Safe; use JSON::XS qw(decode_json); +use Scope::Guard; use parent qw(Bugzilla::CPAN); @@ -275,8 +276,20 @@ sub user { } sub set_user { - my (undef, $user) = @_; - request_cache->{user} = $user; + my (undef, $new_user, %option) = @_; + + if ($option{scope_guard}) { + my $old_user = request_cache->{user}; + request_cache->{user} = $new_user; + return Scope::Guard->new( + sub { + request_cache->{user} = $old_user; + } + ) + } + else { + request_cache->{user} = $new_user; + } } sub sudoer { -- cgit v1.2.3-24-g4f1b