diff options
author | Dylan William Hardison <dylan@hardison.net> | 2018-10-01 18:03:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-01 18:03:41 +0200 |
commit | dd5c0861db83e58ae7f507b4ecfc564d96792cb8 (patch) | |
tree | 7c0f44689a0cd3c1c122342ba7861cb6c72e8e6e /Bugzilla/Quantum/Plugin/Helpers.pm | |
parent | 7e6845e954da409b07d9e8ccb8c1e1ea6df6cfde (diff) | |
download | bugzilla-dd5c0861db83e58ae7f507b4ecfc564d96792cb8.tar.gz bugzilla-dd5c0861db83e58ae7f507b4ecfc564d96792cb8.tar.xz |
Bug 1495071 - Mojolicious Cleanup
There are some things that should've been in the first patch but were missed:
1. Calling $c->finish in the finally block should not happen if an exception has
been raised.
2. Bugzilla->cleanup() should be called at the same time the mojolicious stash
is cleared.
3. Code referencing the shutdownhtml should be removed
4. The conditionals that ran code in Bugzilla.pm when it was not run under
mod_perl should instead check where the Bugzilla.pm module was loaded from.
5. Revert the default template from #770
6. Also removed some stuff that manipulates the PATH and signals, which we
shouldn't do
Diffstat (limited to 'Bugzilla/Quantum/Plugin/Helpers.pm')
-rw-r--r-- | Bugzilla/Quantum/Plugin/Helpers.pm | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Bugzilla/Quantum/Plugin/Helpers.pm b/Bugzilla/Quantum/Plugin/Helpers.pm new file mode 100644 index 000000000..0aedca338 --- /dev/null +++ b/Bugzilla/Quantum/Plugin/Helpers.pm @@ -0,0 +1,64 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. +package Bugzilla::Quantum::Plugin::Helpers; +use 5.10.1; +use Mojo::Base qw(Mojolicious::Plugin); + +use Bugzilla::Logging; +use Carp; + +sub register { + my ( $self, $app, $conf ) = @_; + + $app->helper( + basic_auth => sub { + my ( $c, $realm, $auth_user, $auth_pass ) = @_; + my $req = $c->req; + my ( $user, $password ) = $req->url->to_abs->userinfo =~ /^([^:]+):(.*)/; + + unless ( $realm && $auth_user && $auth_pass ) { + croak 'basic_auth() called with missing parameters.'; + } + + unless ( $user eq $auth_user && $password eq $auth_pass ) { + WARN('username and password do not match'); + $c->res->headers->www_authenticate("Basic realm=\"$realm\""); + $c->res->code(401); + $c->rendered; + return 0; + } + + return 1; + } + ); + $app->routes->add_shortcut( + static_file => sub { + my ($r, $path, $option) = @_; + my $file = $option->{file}; + my $content_type = $option->{content_type} // 'text/plain'; + unless ($file) { + $file = $path; + $file =~ s!^/!!; + } + + return $r->get($path => sub { + my ($c) = @_; + $c->res->headers->content_type($content_type); + $c->reply->file( $c->app->home->child($file) ); + }) + } + ); + $app->routes->add_shortcut( + page => sub { + my ($r, $path, $id) = @_; + + return $r->any($path)->to('CGI#page_cgi' => { id => $id }); + } + ); +} + +1; |